Important: Windows 8.1 may cause blurry display — Many users are seeing strangely blurry applications after updating to Windows 8.1. There are two possible reasons.
First, Windows 8.1 has removed the option to force XP style scaling above 120 DPI (125%), so if you were using that option all your non-DPI-aware programs are now forced into bitmap scaling. Second, if you’re using multiple monitors with different pixel densities, all legacy applications will appear blurry when dragged between monitors. See my Windows 8.1 review for more details and remedies. (Section added 2013-10-19, original post follows)
Gavin Gear’s latest post on Microsoft’s Extreme Windows Blog, Windows 8.1 DPI Scaling Enhancements, describes three new features intended to make life easier for users on high-resolution displays. Let’s have a look at them and see how substantial they really are.
200% Maximum DPI Scaling
The post starts right off with a half-truth: “in Window 8.1 the maximum DPI scaling value was increased from 150% to 200%”. No, it wasn’t – all Microsoft did was add a new radio button on the main Control Panel page for DPI settings, “Change the size of all items.” The 200% scaling option itself was already present in Windows 8.0, under “Custom sizing options.”
Sizing Options in Windows 8.0
In fact, both Windows 7 and even Windows Vista had always supported 200% DPI scaling, although Vista didn’t work too well at that setting. Don’t get me wrong, it’s great that Microsoft finally exposes all available DPI sizes as radio buttons, but some honesty about this tiny UI change would have been nice.
Optimizing Multi-Monitor DPI Scaling
Windows 8.1 will remember different DPI settings for different monitors. This one’s a genuine advance, and long overdue since it affects not only new Windows tablets but also ordinary laptops that are occasionally plugged into external displays. Gavin Gear has posted some nice comparison screenshots with various monitors, too.
(Added 2013-07-26) This feature works a bit differently than I first thought. You don’t actually set explicit per-monitor scaling but rather give some hint of how big you want things to appear, and Windows will automatically select an appropriate DPI setting for each attached monitor. We’ll have to wait and see how well this works in practice with monitors not made by Microsoft, though – in particular ones that don’t have a current driver.
Enabling Custom DPI-Scaling for Apps
Windows 8.1 provides an API for specifying which parts of an application should not be scaled. Judging by the description and screenshots, this seems to apply to desktop applications when using DPI virtualization, allowing developers to e.g. exempt images from virtualization so that they are shown with native pixel sizes. This is indeed nice for photo editing, but remember that Windows developers routinely ignore the existing DPI scaling mechanism. It remains to be seen how many non-Microsoft programs will actually make use of this new API.
All told, only the new multi-monitor support is a substantial improvement. 200% DPI scaling is already available, if you care to click through one extra link, and custom DPI scaling once again relies on active developer support. None of this will solve the long-standing trade-off in many existing applications between broken user interfaces (with XP style scaling) and blurry rendering (with Vista DPI virtualization), although the pixel doubling effect achieved by 200% scaling no doubt makes the blurriness more tolerable. Windows developers still need to learn how to write DPI-independent GUIs, there’s no way around it. Meanwhile I’ve updated High DPI Settings in Windows with notes on these new features.
2013-08-09: Implementing per-monitor DPI awareness is a great discussion of Microsoft’s new API for letting applications dynamically change their DPI scaling, matching whichever monitor they’ve just been dragged to. Nifty and the intention is apparently to have it work fully automatically, although there are still some rough edges.
2013-08-11: The cited post links to Microsoft’s Writing DPI-Aware Desktop Applications in Windows 8.1 Preview. Windows 8.1 introduces a new variant of the DPI-aware flag, so that applications can react to dynamic DPI changes when appearing on a new monitor. Moreover, applications that set the old DPI-aware flag are now DPI-virtualized when appearing on any monitor but the primary, as Windows 8.1 assumes they can only handle the primary monitor’s (= system) DPI setting. I foresee a great wailing and gnashing of teeth when formerly sharp and correctly scaled applications suddenly become blurry…
2015-09-05: Microsoft has updated its very thorough advisory, Writing DPI-Aware Desktop and Win32 Applications, to Windows 8.1. And Chuck Walbourn’s Manifest Madness provides more information on application manifest changes up to Windows 10, concerning DPI scaling as well as other features.