High DPI Changes

Although the Mac had a fairly seamless transition to “Retina” displays, Microsoft hasn’t had the luxury of owning the end-to-end product, and as always with Windows, there is a huge backlog of older applications as well. To say the transition to high DPI has been a challenge would be an understatement. They have made some great progress here, but they still have a lot of work to do, and they don’t have the developer buy-in to just add ways for developers to fix their apps either. Any changes here need to benefit the myriad of applications that don’t, and likely never will, support high DPI APIs.

UWP apps are practically exempt from these issues, but the majority of Windows applications are not UWP, and even tools Microsoft has built to help developers bring their apps to the store, such as the Centennial bridge to convert Win32 apps to packaged apps for the store, can’t fix the underlying issues with supporting applications that were built for 96 DPI on displays with double, triple, or even more, DPI.

But that hasn’t stopped Microsoft from making progress. The Anniversary Update brought some nice changes and worked on per-monitor DPI awareness issues, and introduced mixed-mode DPI scaling, and DPI awareness at the process level instead of just the application level.

A graphic showing many of the common issues with High DPI, especially on mulitple different DPI displays

With the Creators Update, they are introducing a new way to handle per-monitor DPI issues, which they have dubbed Per-monitor DPI awareness V2. The new method adds support for child window DPI change notifications, automatically enabled non-client scaling, automatic DPI scaling for dialog boxes, and more control for dialog scaling. All of these are to improve how a developer handles DPI scaling, and especially on a system with multiple monitors with different DPIs, which has been one of the biggest sore spots even as the primary monitor DPI issues have been worked on over the last couple of years. This is an incredibly common scenario too, with a high-resolution laptop docked to a standard resolution display, for example.

Win32 clearly has a lot of baggage to deal with, but hopefully we will continue to see API improvements in Windows 10 updates to keep chipping away at these issues. However, this assumes that a developer is actually going to update their application. That may never happen.

When looking at this issue three years ago when we looked at DPI issues in Windows, one of the conclusions was that Windows has to stop expecting applications to behave correctly. There needed to be an override on the exe to force it to be scaled by Windows, since many applications were claiming to be DPI aware, when they were not at all. If the application could be set to ignore this flag, at least Windows would be able to scale it using bitmap stretching. It wouldn’t be ideal, but it could perhaps make the application useable when it would otherwise not be.

Microsoft has somewhat addressed this, with a new setting in the application compatibility called System (enhanced) DPI scaling. This new setting has some limitations, but is effective enough that Microsoft is using it for some built-in applications. Functionality is limited to GDI-based applications and it won’t correctly scale GDI+ content, DX content, or bitmap content, so it may have limited appeal. End users will have to try this on any application they are having DPI issues with to see if it helps.

But when it does help, it helps a lot. Microsoft is using this new scaling method to fix the Microsoft Management Console (mmc.exe) which means the device manager, and more, will be scaled correctly in the Creators Update. Here’s a screenshot of the differences.

Enhanced Scaling OFF

Enhanced Scaling ON

If the application is mostly text based, it could be improved quite a bit with the new mode. It’s not going to solve all applications from having issues, but it’s a nice step in the right direction.

They have also fixed desktop icons being scaled incorrectly if running in a mixed monitor environment.

Microsoft acknowledges there is still work to be done here, especially in the mixed monitor scenario. They are looking at having the Display Settings section show displays in their physical size rather than resolution, which would help a lot if you have a low-resolution monitor that’s larger than a high-resolution monitor, and it makes dragging windows between them difficult. They would also like to address the weird giant windows you get dragging windows from a high DPI display to a low DPI display. There is more coming as well, so stay tuned.

Privacy Changes, OOBE, and App Installs Windows Subsystem for Linux
Comments Locked

69 Comments

View All Comments

  • MattMe - Tuesday, April 25, 2017 - link

    Are you by any chance running an install of 10 that was upgraded from an earlier version? Several test machines at work, and alll my home machines struggled after an upgrade, I hated it the first few weeks. The I did a fresh install on them and it fixed 99% of all issues I had on every device. Just a thought :)
  • fm13 - Tuesday, April 25, 2017 - link

    I tried upgrading from 8.1 Pro but gave up and just installed Win 10 on a formatted drive. So this is a "clean" install I'm talking about.
  • Instyle - Wednesday, April 26, 2017 - link

    An issue I've ran into is that the update files that got downloaded were in some corrupted state. So instead of checking for updates, Windows Update would try to use them and fail. The solution I've found is to delete C:\Windows\SoftwareDistribution. This is where update files get downloaded to (including new updates like the Creators Update, culmulative updates and security updates) before being applied. Normally you can't just rename/delete it as there is typically some update process running in it. You have to kill any process running in it by opening Task Manager > Performance > Open Resource Monitor > CPU > Associated Handles and enter the folder path into the Search box. It'll pull up a list of processes open in that folder, end each of them. Next go to the folder and either rename (if you're wary) or delete it. Then check for updates. Hope this helps!
  • lord_anselhelm - Tuesday, April 25, 2017 - link

    Don't know if this will help, but you might want to try the Windows Update Troubleshooter. I had a problem on my laptop where a couple of files had been corrupted and I was unable to update Windows. The troubleshooter fixed it. Also, consider using Windows Update MiniTool: it's so much nicer than the default updater.
  • faizoff - Tuesday, April 25, 2017 - link

    This update was surprisingly the smoothest update process for me. Too much stuff configured currently for me to do a clean install, the update itself went about without any consequence. No programs have been affected that I could see. The upgrade process has been getting better and better. Though there is still some issue with my wifi adapter when using the latest drivers provided by the mfg. wifi only works well with a particular version of the driver.

    I like the Edge enhancements, don't use game mode so don't care about it. paint 3D is fun and I'd never thought I'd actually prefer the previous iteration of the start menu with all apps tagged along with the pinned tiles. Really warming up to it now.

    One issue still prevails that's been there from the start, explorer.exe crashes randomly and restarts, still cannot for the life of me figure that one out.
  • blahsaysblah - Tuesday, April 25, 2017 - link

    The security center needs an update. I guess maybe in minority but my PC is on a UPS and i have its status connected via USB port. So i have two yellow warnings about LCD being set to max brightness and sleep being turned off, both impacting battery life.

    The problem is there is no way to turn off/confirm those alerts, so i always see a yellow triangle. So i just ignore it now as i have no way to know if there is a new and valid issue.
  • DanNeely - Tuesday, April 25, 2017 - link

    The workaround for the LCD brightness notice is apparently to set the screen at 99%. (Seen elsewhere, not tested.)
  • benedict - Tuesday, April 25, 2017 - link

    The Creators Update broke the DateTime Picker on all legacy applications. Microsoft are aware of this problem since early March and still haven't done anything to fix this. I've told all my customers who were unfortunate enough to update to revert back to the old version and wait for Microsoft to fix their bugs.
  • JimmiG - Tuesday, April 25, 2017 - link

    Is game mode really activated by default? I've always had to open the game bar and check the "User game mode with this game" checkbox.
  • mr_tawan - Tuesday, April 25, 2017 - link

    I think it's enabled by default only in select title and UWP games.

Log in

Don't have an account? Sign up now