High DPI screen & Windows: how to make programs behave as on low-res screens?
I am using Windows 10 on a high resolution laptop screen. Some programs supports the high-res screen and look sharp. Some don't and look blurry, but still appear at the correct size. I'm happy with both.
But then there are those programs which only have a half-baked support for a high DPI setting: they either appear tiny or some window elements are tiny while others are normal size. This makes some of these programs plain unusable, others very unpleasant to use.
Is there any way to ask Windows to fool these programs into thinking that they are running on a low-resolution screen, and then scale them up proportionally? I would much prefer that all window element render at the correct size even if this means that they will become blurry.
To avoid confusion: I am aware of the "Disable Display Scaling On High DPI Settings" compatibility setting in application properties, but this is not what I need. I am asking for the opposite of this: enable blurry upscaling and make the application believe that it is running on a low-resolution screen.
Solution 1:
Let's break out the big guns.
Download and install the Application Compatibility Toolkit. That includes a program called the Compatibility Administrator, which comes in two versions, a 32-bit one and a 64-bit one. Run the one with the same bitness as the application you want to whack.
Background: Many applications claim they support a certain feature but then mess up the implementation. Microsoft deals with this all the time, and they have created compatibility infrastructure to reuse fixes for common problems. These fixes are implemented as shims, intercepting calls to the Windows API. We will use a shim that effectively cancels the application's declaration of DPI awareness. Other shims do fancier/configurable things (see CorrectFilePaths
), while some just lie to the application about its environment (like ForceAdminAccess
).
At the bottom of the Compatibility Administrator's left pane, you'll see a new entry in Custom Databases. Right-click it, and choose Create New → Compatibility Mode. Name it something (I used DpiMisbehavior
). In the left list, find DPIUnaware
and click the >
button to enable it. Click OK once you've done that.
Right-click the custom database again and choose Create New → Application Fix. Fill out the program name and vendor (these doesn't matter too much) and select the main EXE of the application. (This is where the bitness of the Compatibility Administrator is important.) Press Next when you've done that.
In Additional compatibility modes, scroll down and find the compatibility mode you created a moment ago. Check its box. Do a test run if you want, then hit Next.
Now, strictly speaking, you didn't need to create a compatibility mode because you can apply specific fixes here. I had you do that in case you need to add additional fixes to that mode later so they'll apply to all apps that you put under that mode. So you can just hit Next without doing anything on the Compatibility Fixes step.
Matching information is used to identify what app a program (EXE) represents. (It would be rather unfortunate if fixes were applied to programs that don't need them.) All checked entries must match for a program to get the fix. The Compatibility Administrator pulled these criteria values out of the EXE you specified earlier. The defaults are fine, or you can change them if you feel strongly about such things. Hit Finish when satisfied.
Repeat the Application Fix creation stuff for every program that needs it. Then press Save in the toolbar. Give it any name you want; I used DPI Repair
. Then save it wherever in the file system you want. You can use Open toolbar item and select that file if you need to modify it in the future.
Finally, right-click the newly-named custom database, and choose Install.
Oh yeah.
If, in the future, you do need to modify the compatibility database, just open it up, make the appropriate changes, hit Save, then do Reinstall; it'll just go right over the old version. In fact, you can copy this database to another computer and use the Compatibility Administrator to install it there without having to recreate it.
Optional entertainment: Expand the Applications entry under System Database to see a list of programs Microsoft had to fix with this infrastructure. Clicking on a program's entry will show you what fixes and compatibility modes were applied. Under Compatibility Fixes, you can see a full list of what fixes your computer can use.