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.
6 thoughts on “Windows 8.1 DPI Scaling Promises”
Unfortunately I’ve found that the implementation of per-display scaling is fundamentally flawed and results in blur on the lower scaled display. For example with a high dpi ultrabook at 200% scaling and an external display at 100%, the external display is blurred. I’ve posted this on various forums such as:
Believe it or not, that’s by design — see the passage added under “2013-08-11” in my post. Per-monitor scaling requires an application’s active support of yet another new API, or else the application will be bitmap-scaled on anything but the primary display, i.e. blurry as you saw.
That is madness! The even crazier thing is that it is the newer applications are the ones that appear blurry. For example, virtually all of the Windows OS stuff including file explorer, control panel, messages etc etc are blurry. Visual Studio 2013, Office 2010 – all blurry (don’t know about office 2013). Old applications like Google Sketchup which would normally appear more blurry on a 200% scaling because their bitmaps have simply been doubled, appear sharp. Either their bitmaps are not being scaled or the scaling up and then down again results in the same image. When you zoom in to the examples I’ve posted, the level of blur is ridiculous, no wonder I can’t use it. I think the monitor is going to have to go back.
This is going to be a show stopper for what I imagine will be the most common requirement for per-display scaling – attaching a 100% scaled external display to a higher scaled portable device. Major design flaw!
Actually that’s a good thing. Not every application support windows’ DPI scaling.
For example, XOWA, the offline wiki reader, has a bug that increasing font size does absolutely nothing on my system. I would prefer upscaling it, thus blurring the text or whatever images shown on the screen, than seeing some small tiny dots that pain my eyes.
But some filtering to improve the scaled image would be nice.
Yes I think lampuiho is right. Microsoft learnt the hard way with XP and earlier OSes that relying on applications to do stuff right is a bad idea. Forcing them to at least declare they support per monitor DPI independence makes sense. (Even if many applications declare it in the manifest and then do an absolute horrible job of it.) The only thing I imagine they could have done differently is chosen the highest DPI as the system DPI, then downscaled from there as necessary, rather then chosen the primary display DPI as system then upscaled or downscaled as necessary. But I imagine this would have introduced some complexities. Really so many applications were already so terrible at support high DPI before 8.1 that I don’t think it’s a major loss. It’s likely anyone who actually bothered with proper high DPI support has adapted by now or will soon anyway.
I am experiencing the same issue. Programs looks great on my primary display, but they are blurry and too large on my secondary. I should have known this was a “Microsoft Feature” and not a bug. How pathetic.