Windows 10 started its journey to simplified display settings with an awkward combination of dialogs in the modern Settings app and the legacy Control Panel, as described in my previous post on the subject. With the recently released “Creators Update” (version 1703) the journey appears to have reached its destination. All display settings, including all DPI settings, are now exclusively handled by the Settings app and have been further streamlined as well.
On the developer side, Microsoft’s Peter Felts details the new High-DPI Scaling Improvements for Desktop Applications and demonstrates them in a short companion video. Most require either developer cooperation or apply to Windows UI elements only, but all users should know about a huge change in per-application compatibility properties which I’ll describe below.
High DPI Desktop Application Development on Windows is Microsoft’s current reference article on the subject. As a reminder, Windows team members have also posted on the evolution of DPI scaling up to the initial release of Windows 10, and on API changes in Windows 10 Anniversary Update.
Earlier Windows 10 Changes
Windows 10 enforces DPI virtualization (i.e. blurry bitmap scaling) at all scaling levels, even at 125% (120 DPI) which had defaulted to XP style scaling in older versions. See my main article, High DPI Settings in Windows, for what this all means. The important point is this: if you’re running at 120 DPI and text that used to look sharp suddenly looks blurry in Windows 10, you need to manually disable DPI virtualization (see below) for each individual blurry-looking application.
If you have multiple monitors, Windows 10 can maintain different DPI scaling levels for each, a feature first introduced in Windows 8.1. The default levels are an estimate for proportional scaling, so as to achieve approximately the same physical display size on each monitor. You can also manually select different levels for any or all monitors. I don’t have a screenshot for this as I don’t currently have multiple monitors attached, but I expect it looks roughly the same as before.
Basic DPI Settings
You can find the basic controls for changing DPI scaling in the modern Settings app, under System: Display: Scale and layout. The available steps are 100–250% in 25% increments, continuing up to 350% in 50% increments. The default guessed by Windows is marked as “Recommended” but this is usually too small for my eyes (e.g. 150% instead of the 200% I prefer). By the way, above the Scale and layout drop-down box appears the nifty new “night light” feature to soften display colors at night.
Custom DPI Settings
The more fine-grained custom controls have been migrated from the Control Panel to the Settings app. Click the “Custom scaling” link under Scale and layout to access a surprisingly simple and informative new dialog. The range of DPI scaling available here is widened to 100–500%, with no fixed steps – you can type any number you choose.
As this dialog now clearly states, using Custom scaling has an additional effect: the entered value applies to all attached monitors equally. Consequently, entering and applying a value here internally changes the registry key
HKEY_CURRENT_USER\Control Panel\Desktop\Win8DpiScaling from 0 to 1, since Windows 8.0 was the last version without per-monitor DPI scaling. Moreover, the Scale and layout section will now show a dedicated link to “Turn off custom scaling and sign out.”
For the record, the ancient and obsolete option to Change only the text size has been removed in the migration to the Settings app. This is a good thing as it was pointless and confusing. See the previous post if you really want to know more about it.
Right-clicking on an application executable lets you open its Properties window. On its Compatibility tab, you can force any desired per-application scaling method under “Override high DPI scaling behavior.” When unchecked Windows will apply DPI virtualization unless the application claims to self-scale, in which case Windows will do nothing. When checked you have three choices, as shown below:
- Application — Disables DPI virtualization (or any other system scaling) and requires the application to scale itself correctly. Try this when an application appears blurry. If it now renders correctly, the developer merely forgot to flag the application as self-scaling.
- System — Enables full DPI virtualization of all display output of the application. Try this when an application appears too small or shows scrambled layout. This option should always fix such problems, although at the expense of some blurriness.
- System (Enhanced) — Enables DPI virtualization of the application’s display output, except for GDI text and line rendering which is re-rendered at the target resolution. If you’re lucky this option will produce correct layout with less blurriness than System.
Older Windows versions featured only a single checkbox here, entitled “Disable display scaling on high DPI settings.” Checking it allowed users to opt out specific applications from DPI virtualization, but not to opt in when the application was marked as self-scaling by its developer. This was a notorious problem for Java Swing applications which were always so marked but hardly ever actually self-scaled. You can now use System or System (Enhanced) to fix such applications on a case-by-case basis.
All in all, the new DPI settings interface is finally one I’m happy with. It’s clear and obvious, free of bizarre legacy cruft, well-documented, and even allows enforcing DPI virtualization. What it won’t magically fix is applications that just don’t care about proper DPI scaling – these will still appear blurry, partly or wholly. Happily not many of these legacy applications are left, as even Apple iTunes has finally fixed its display and Java Swing is expected to properly self-scale in Java SE 9.
10 thoughts on “DPI Settings in Windows 10 “Creators Update””
Thank this is very helpful and has fixed nearly all issues I was having with tiny icons, etc. I do have one application, though that even with the DPI Override — has an issue with the menus that show files: it’s an FTP program. The file display is magnified to the 250 magnification required to see other items, if i reduce the magnification, i can see the filenames, but everything else is so tiny I can’t use the program. Any suggestions?
I don’t quite understand the problem. Is the program free to download somewhere? If so please post a link and I’ll try it on my own system. Generally, though, setting the override to “System” should always work for misbehaving applications.
Trying to manually disable DPI virtualization for Outlook 2013 in Windows 10; Outlook Properties has no Compatibility tab; Outlook’s Compatibility Troubleshooter doesn’t have this kind of granular control over settings. Or am I overlooking it?
Forgot to add: this version of Outlook is 32-bit
Interesting. The only Office application I have installed is OneNote 2016 – also 32-bit, full version, not the modern app included with Windows 10. I tried the right-click Properties on both the OneNote icon and the actual executable. Indeed, there is no Compatibility tab.
It seems Microsoft blocks a number of settings for its own applications. You could try directly adding an Outlook entry to the registry keys for DPI scaling (see my main article) but I suspect Office applications might simply ignore those, too.
Microsoft’s current documentation: https://msdn.microsoft.com/en-us/library/windows/desktop/mt843498.aspx
Thanks, I’ll update my post and article accordingly.
im having problems some programs has alot scaling, and my computer dont alow me to go below 100%
so has consequence some programs i cant see all :(
Is there a way to still opt-out of DPI virtualization even when the application is marked as self-scaling? There are programs, such as steam and Photoshop, where any sort of scaling above 100% is a bug rather than a feature.
There’s a misunderstanding here. Applications that are marked as self-scaling never use DPI virtualization by default, on any Windows version. I don’t know about Photoshop but the latest Steam update, for example, no longer uses DPI virtualization but instead self-scales. If you don’t like the appearance you could try opting into DPI virtualization by selecting System scaling.