Microsoft May Never Fix the High DPI Issues in Windows 10

Posted on October 25, 2016 by Paul Thurrott in Windows 10 with 55 Comments

Microsoft May Never Fix the High DPI Issues in Windows 10

After a year of effort, they finally fixed Notepad. Partially.

With my wife struggling to use a modern Windows 10 laptop with an external display, I’m reminded of how Microsoft has never fixed the issues with high DPI displays.

And in one of life’s many small coincidences, Microsoft may have literally just explained why it will likely never do so.

The issue is simple enough for the majority of us who use Windows 10 with a single display. (Portable or desktop, it doesn’t matter.) If the resolution of the display on that PC is high enough, and the physical size of that display is small enough, then you’ve got what’s called a high DPI display. And you will need to scale the UI in order to make commonly-used interfaces—icons, buttons, text, whatever—readable and usable.

Windows 10 of course handles this in a fairly elegant way, assuming you’re only talking about the OS itself and modern Windows Store apps: Using Display settings (Settings, System, Display), you can scale the UI from 100 percent—the default on “normal” (non-high-DPI) displays—to 125 percent to 250 percent, or even more, depending on the display. Surface Book and other PCs with high-DPI displays will ship with this setting enabled somewhere in that range. Otherwise, the icons and other onscreen items would be too small to see or use.

Where this functionality falls apart is legacy apps, especially older desktop applications that have never been updated for these modern display types. For example, my well-worn copy of Adobe Photoshop Elements 11 still works just fine on my desktop PC, where the display scaling on the 27-inch 1080p display is set to 100 percent. But on modern portable computers, like Surface Book, the menus and other onscreen interfaces are too tiny to read or accurately select because this app doesn’t scale. I had to buy a more modern version, Photoshop Elements 14, to use on these devices. That version does scale.

In my own usage, I still run into desktop applications that work poorly on high DPI displays. Android Studio is a great example: It’s poorly made and designed, and aside from the rampant performance and reliability problems, its inability to handle high DPI displays remains my major stumbling block. Learning Java and Android software development has been an easier task than just getting the development environment to look and work correctly on my portable PCs. (That is almost not an exaggeration.)

But back to my wife, who I often offer up as a so-called normal user. She doesn’t care about anything I just described, and she just wants to get work done. I recently switched her from a 2015-era HP Spectre x360 to the 2016-era HP Spectre laptop that I reviewed back in July. (It’s a little more complicated than that; she was also using an HP Stream 11 at a standing desk and was hoping to find one thin and light machine she could use both at her normal desk and the standing desktop. But I digress.)

For the past several years, my wife’s “desktop” PC setup has included a portable PC of some kind (a 13-inch Samsung Series-9 Ultrabook for a while, then that HP Spectre x360) connected to a 27-inch display, keyboard, and mouse using a USB-based hub and a tangle of wires. With the new HP Spectre, I wanted to get her going with a more elegant solution, perhaps involving a single cable. (This would make it easier to move between the “docked” desktop setup and the portable mode at the standing desk.) So I grabbed a Plugable USB-C Docking Station from Amazon, and the results have been pretty great: She actually uses two USB-C cables (one for power, one for the dock), but it’s a much less tangly experience than before. That one cable drives the display, the mouse, the keyboard, whatever USB storage she needs, and her Ethernet connection.

Less elegant, however, is the experience of moving between docked and non-docked usage. And anyone using Windows 10 who has done such a thing can see where this is going: Because she mirrors the display between the laptop and the desktop display, it’s never right. At the desk, she needs the display configured for 100 percent scaling. But using just the laptop, she needs it set to 125 or 150 percent (I can’t recall) so she can actually see and use the on-screen items. Windows won’t elegantly move between the two, in fact won’t do so at all. And so she is stuck. She can either learn to span the displays while docked. Or deal with manually changing the scaling every single time she docks/undocks the PC.

In other words, this is broken. Has been for years. Still is.

I mention a coincidence. Just yesterday, Microsoft published yet another lengthy blog post describing the challenges of high DPI displays and how it is continually improving the OS to make it better. Speaking of challenges, I challenge you to actually read it. It’s dense, and tough-going. But if you slog through all of it, the conclusion is obvious enough: Microsoft will never really fix this problem. Not really.

And you can see why in this post’s lengthy explanation about how Microsoft, over multiple releases of Windows 10, attempted to fix just one legacy desktop application that’s built into Windows, Notepad, to work correctly on high-DPI displays in a very specific scenario: You have two displays, each with its own display scaling setting. You couldn’t pick a simpler application. And yet, this was a huge challenge to fix.

“During the first Windows 10 release we developed functionality that would enable non-client area to scale dynamically, but it wasn’t ready for prime-time and wasn’t released publicly until we released the Anniversary Update,” the post explains. That’s right. It took Microsoft three releases of Windows 10 to get one app—one very simple app—to work properly with high DPI. In one scenario.

Seriously. Read that post, just the part about Notepad. And then wonder to yourself: How on earth will this ever just work? For me. For my wife. For you. For anyone. And the conclusion is clear: It won’t, not really.

“We recognize that there are still gaps in the DPI-scaling functionality that Windows offers desktop application developers and the importance of fully unblocking developers in this space,” the post concludes. “Stay tuned for more goodness to come.”

I could use some goodness right now, to be frank. So could a lot of other people.

 

Premium Comments (39) Comments (16)
Elevate the Conversation!

Join Thurrott Premium to enjoy our Premium comments.

Premium member comments on news posts will feature an elevated status that increases their visibility. This tab would allow you to participate in Premium comments with other premium members. Register to join the other Premium members in elevating the conversation!

Register or Subscribe
39 Comments
Sort by Votes | Date
  1. 4 | Reply
    andrewtechhelp Alpha Member #711 - 1 month ago

    I didn't interpret that article quite the same way you did Paul.

    The bit that took Microsoft a year to get working correctly isn't something that is Notepad specific. It's something that affects Notepad, but what they developed was an API that can automatically handle the scaling of the title bar, menu bar, status bar, scroll bars and other common parts of many many classic desktop applications. They would have had to develop this for and test this on thousands of different Windows applications, not just Notepad. So it's not going to be a case of "well getting this bit of UI to scale properly took 1 year to do on Notepad, so it'll take 5 years to do on a complex application like Photoshop", that work is done for everyone now (provided developers go in and take advantage of that API in an update to their application).

    You are right though about this probably never being properly fixed, but it won't be due to Microsoft not providing the tools to developers to fix this problem, it'll be developers making the decision that it's not worth doing it (whether that be time, money, complexity etc.).

  2. 2 | Reply
    Bart Alpha Member #117 - 1 month ago

    Though scaling is an issue, I am having issues blaming solely Microsoft for this. What are (legacy) app builders doing to bring their software in to the 21st century? Sure, MS needs to provide the right API's. But then its up to ie. Adobe to provide first class software, that runs on a modern platform.

  3. 2 | Reply
    adamcorbally Alpha Member #1838 - 1 month ago

    Perhaps a good argument for UWP over win32 apps? I mean on the off chance anybody actually develops anything new for the windows platform.. 

    Do macs have a similar problem or is this windows specific?

     

    I've never used a mac

    1. 0 | Reply
      ABianucci Alpha Member #391 - 1 month ago
      In reply to adamcorbally:

      I have never head the problem on the MAC.  The have a slidebar to adjust the size you would like, and it just works 100% of the time for me.

    2. 0 | Reply
      the_zeni - 1 month ago
      In reply to adamcorbally:

      Mostly windows specific because Macs only doubles resolution (so you never have like 125% scaling... only 200%). And then just scales up old UIs (but there aren't that much left of these since Mac never had this legacy problem with 15yo software in the first place).

      But you're correct, UWP is REALLY easy to code against any scaling as the OS/Environment takes care of most the stuff. It just isn't always that easy to port the apps (well, good written business logic would be... but the UI is not) and many of them aren't updated anymore or are specific to some old hardware.

  4. 2 | Reply
    wspaw Alpha Member #1918 - 1 month ago

    I dock and undock my SB daily. I find it easier to just sign out and back in each time i dock or undock and Windows automatically adjusts the scaling. If I go to the display settings to adjust ther scaling I need to sign out anyway for a lot of legacy apps to scale properly.

    1. 0 | Reply
      the_zeni - 1 month ago
      In reply to wspaw:

      Yeah, that's the procedure around most users in my copany perform. But one would still wish it wouldn't be necessary. Maybe it should be possible to enable some kind of legacy mode for these Apps that does the same (simulate user session restart or what ever is the key point) as actually sign out and in does.

    2. 0 | Reply
      JerryH Alpha Member #248 - 1 month ago
      In reply to the_zeni:

      My configuration is either a Surface Pro 4 or a Lenovo X1 tablet. I connect to the dock and to two external screens - one 27 inch 2560x1440 and one in portrait mode at 1080p. I find that the scaling is fine as long as I set the internal screen to OFF in this config and ALWAYS boot up docked. Then it works both docked and undocked. But as soon as I boot up undocked - using the internal screen - damn, it is screwed up when re-docking. Definitely this is a pain as Paul calls out. As long as I avoid rebooting or signing out and in while undocked I am pretty much OK.

    3. 0 | Reply
      clarkezone Alpha Member #2041 - 1 month ago
      In reply to the_zeni:  Thx for the feedback. 
      James [MSFT High DPI team]

       

  5. 2 | Reply
    inlocoabsentia Alpha Member #1634 - 1 month ago

    Fixing this problem is as simple as settiing the displays to extended when they have different dot pitches. I would go so far as to disable mirroring in that case, because mirroring between two displays have that have drastically different dot pitches makes no sense. I never set my secondary display to mirrored; I always have to Windows+P or something to set it to extended.

  6. 1 | Reply
    lwetzel Alpha Member #113 - 1 month ago

    "I could use some goodness right now, to be frank. So could a lot of other people."

     

    No I think you are like most people.  We only see the bad and are not thankful for the good we overlook.

  7. 1 | Reply
    Narg Alpha Member #420 - 1 month ago

    This again?  Come on, this is not a Microsoft issue, it's an open system allowing developers to write piss-poor software issue.  Yet, if they "closed" the OS, everyone would gripe then too.  You can't have your cake and eat it too, right?

    1. 0 | Reply
      hrlngrv Alpha Member #100 - 1 month ago

      In reply to Narg:

      If it's really difficult for MSFT to rewrite Notepad to scale differently under different screen resolutions, wouldn't that imply it may be rather difficult for 3rd party developers to modify their software to handle scaling automatically? Or was Notepad an especially poor piece of MSFT software?

  8. 1 | Reply
    gregsedwards Alpha Member #1910 - 1 month ago

    As a recent owner of a Surface Pro 4 coming from an older Lenovo ThinkPad, I totally understand this frustration. The older laptop's display was only 1440x900, and when docked it was connected to a pair of 27" 1920x1080 monitors, so I almost never had any scaling issues at all. However I'm now using the SP4 with those same monitors, and every time I redock after a meeting, the device spends 10 minutes trying to put the disjointed pieces back together. And it's not just Win32 apps; oftentimes the task bar, icons, and captions on the lower resolution desktops are all wacky, too. If I have to slog through it to get an important task done, then I will, but it's often easier just to restart the device and let everything sync properly. This was an issue when I owned the original Surface Pro years ago, and I recall Paul complaining about this a long while back, but I'd assumed/hoped it would be fixed by now. Guess not. But still, nice to know I'm not alone here.

  9. 0 | Reply
    alf - 1 month ago

    As a high-DPS laptop user and an Android Studio user, I agree the DPI problem is a big one.  But it's not just a Windows issue -- every application must be rewritten (sometimes from the ground up) to account for this new "retina" world.  That's apparently going to take a VERY long time.  Heck, even my Adobe suite still uses icons & menus designed for 1990's monitors.

    On a related note, something that I believe Windows SHOULD fix (and ASAP) is keeping track of desktop icon locations during screen resolution changes.  Whether you change resolution to fit a projector for your conference presentation or lower your resolution to get more FPS out of your video game, when you return to native resolution your desktop icons are all screwed up.  EVERY TIME.

    Yes, explaining it to your wife who doesn't really care or want to deal with it is an issue.  But heck even for me this is unacceptable.  And try explaining it to an 8 or 10 year old who thinks they broke the computer every time they leave their video game.

    Oh, and Macs have this same problem. Adobe apps are even harder to read on a 5K iMac.

    1. 0 | Reply
      mclark2112 Alpha Member #1239 - 1 month ago
      In reply to alf:

      This!!! Almost every day, I have to reboot my Surface twice to get the mouse to be scaled properly accross the Pro 4's display and the external 4K display (100% scaling). So even the OS borks regularly on the scaling issue.

    2. 0 | Reply
      hrlngrv Alpha Member #100 - 1 month ago

      In reply to alf:

      There are 3rd party utilities for storing and restoring desktop icon positions on desktops with different screen resolutions. Maybe nice if MSFT bundled that into Windows, but not really necessary.

    3. 0 | Reply
      alf - 1 month ago
      In reply to hrlngrv:

      A lot of things aren't strictly necessary. For example an accurate estimate for how long a file copy will take.  But it's certainly something an OS SHOULD do.  Which third party icon organizer is worth installing?  I've looked at a couple but they were more trouble than they were worth.

      My solution on Windows 10 at least has been to lean heavily into the new start menu and put as little as possible on my desktop. Unfortunately all my relatives are users who like to save every document to their desktop because otherwise everything "gets lost".  {{{shudder}}}

    4. 0 | Reply
      hrlngrv Alpha Member #100 - 1 month ago

      In reply to alf:

      I use something called DesktopOK from softwareok.com. I haven't had any problems with it, though it helps that I can read German.

  10. 0 | Reply
    ccalberti - 1 month ago

    I have this problem using the Surface Book with the Mirosoft Dock and my high DPI Viewsonic monitor.  Many times the pc boots up in "narrow" mode (as if using the laptop display even though in the dock), but then changes to "wide" mode once I open and close the top of the pc while still docked.

  11. 0 | Reply
    Swiftnc Alpha Member #1346 - 1 month ago

    Can we end this madness and just get laptops with reasonable resolutions?  How many poeople REALLY need a high DPI monitor?  How many people actually want it? (Less battery life, scaling issues while docked and undocked).  I hate that my Surface Pro 4 has a high DPI so much that I have hacked the driver to allow it to run at 1600 x 1066 with 100% scaling instead of the crazy high (and worthless to me) 2736 x 1824.  I am not alone in this desire.  The high DPI and scaling issues it causes when docked is the #1 complaint I have heard with companies when they evaluate the Surface Pro 4/Book.

  12. 0 | Reply
    hrlngrv Alpha Member #100 - 1 month ago

    So Macs lead PCs in this area?

  13. 0 | Reply
    dallasnorth40 Alpha Member #437 - 1 month ago

    I wanted to install my old copy of Adobe Photoshop CS5 on my new Surface Pro 4 (ran out of installs for Photoshop CC) and, of course, at full resolution it was completely unusable. I stumbled onto this site that gave a simple registry hack that fixed the problem in 2 minutes.

    It appears that Windows polls an app before it runs asking if it is HiDpi compliant or not. Depending on the response Windows handles the scaling. Old copies of Photoshop apparently lie and say they are HiDpi aware when they are truly not. This registry hack will tell Windows to ignore that answer and handle the scaling properly.

    Photoshop CS5 works fine on my Surface Pro 4 now at full 2736x1824 resolution. I haven't tried it, but this may work for other legacy apps as well.

    See the fix here: http://www.danantonielli.com/adobe-app-scaling-on-high-dpi-displays-fix/

     

     

  14. 0 | Reply
    edboyhan Alpha Member #492 - 2 weeks ago

    My only current issue with the high dpi problem is with the Chrome browser (latest version 54, and every version before) on a Samsung ATIV Book 9+ -- 3200x1800); no external monitor -- just the laptop on Windows 8.1.  The scaling of the non-client areas of Chrome (tabs, menus, favorites, etc) is abominable.  There are many suggestions in the community bulletin boards -- none of which work conclusively, and most are rather obscure.  I've got something that marginally works, but it sure is ugly, and it runs the risk of breaking whenever Google releases a new version.

    On my W10 machines (most of them these days) I decided to grit my teeth and stick with Edge. Chrome is not installed on these machines -- so I have no idea whether things would be any better under W10.  Right now on the anniversary update Edge is good not great (with the LastPass & Pocket extensions), and there are NO high dpi issues. 

    I've been harping on this issue at the past few Build conferences with the MS display guys.  They've got a real problem going back to the original GDI design.  At first they said it couldn't be fixed, then gradually they've added some "improvements" that give you some "manual" control, but as you say not much help when you have two or more display devices with widely varying resolutions.  I can't see any automatic way of fixing this for legacy apps short of putting code in those apps to detect the resolution of the device the app is running on, and (more difficultly) detect when the app is moved among screens each with different resolutions. 

    The legacy app universe (the win32 API and all its minions) is in stasis -- very few developers are going to do much with these.  They are certainly not going to convert them to UWP -- there's no economic justification for that.  What happens with legacy LOB apps is also problematical.

  15. 0 | Reply
    rejohnson Alpha Member #2198 - 1 month ago

    It's also terrible with Remote Desktop.  Just about completely unusable connecting to remote sessions like servers and VMs with a Surface or other laptop with a High-Def display.  No problem with Windows 8.1 or 7 so I blame Windows 10.

    1. 0 | Reply
      Waethorn Alpha Member #2235 - 1 month ago
      In reply to rejohnson:

      A lot can be blamed on Windows 10 lately.

      I can only imagine what next year's double upgrades will be like.  2 AU-like disasters in a single year?  Care to place your bets?  I'm calling it early: we'll see more customer revolts in 2017.

  16. 0 | Reply
    plettza Alpha Member #1558 - 1 month ago

    This is why the WinRT architecture is so important. It fixes things that are inherently wrong with legacy Win32 apps. Not only this sort of thing but also security, power management, portability and touch input. The indifference towards WinRT apps by developers has always left me scratching my head. For years, Microsoft got hammered for poor performance of Windows and security holes so they try and fix it and everyone simply ignores WinRT. These problems were mostly caused by poorly written Win32 apps and the legacy subsystems needed to run them.

     

    Paul might want to write articles aimed at companies like Adobe asking them why they haven't shifted to WinRT for their programs rather than asking why Microsoft isn't fixing display issues that affect 15-year old programs.

    1. 0 | Reply
      hrlngrv Alpha Member #100 - 1 month ago

      In reply to plettza:

      indifference towards WinRT apps by developers has always left me scratching my head

      It's not that mysterious. Including phones and PCs, at it's usage height, there were 5 times more PCs running Windows 7 and older than Windows 8.x PCs, tablets and phones. Further, Windows Phone 8.x and Windows 8.x PCs couldn't share apps. Finally, PCs running Windows 8.x could run Win32 software, and there were 7 times as many PCs running every Windows version through Windows 8.1 than there were phones running Windows Phone 7.x and 8.x.

      Windows 8.x failed to catch on with PC users, and developers remained where their PC customers were. Adobe, for example, isn't willing to go out of business switching to WinRT or UWP.

      Also, today UWP can't do everything Win32 can.

  17. 0 | Reply
    wright_is Alpha Member #1319 - 1 month ago

    I did get the problem of moving from the internal (high dpi) to external dispaly (extended desktop), where the window would appear huge, until the whole window transitions to the external display.

    That said, I just bought a new 34" Dell ultra wide display and I tend to use that as the only display (internal turned off), when docked. Switching between the external and the internal display doesn't seem to have any scaling issues. Mirroring is another matter, but that is never going to work, if you have different DPI on the two displays.

  18. 0 | Reply
    Finley Alpha Member #1029 - 1 month ago

    In order to scale properly Win10 would need to know the DPI of the screen (this wouldn't solve all problems but would solve some I would hope). Thus this information would have to be passed on to the OS when an external display is connected.  

    Does that info get passed on when an external display is connected?

    1. 0 | Reply
      the_zeni - 1 month ago
      In reply to Finley:

      For all modern screens, yes. Windows chooses the proper scaling for me on a wide variety of screens. It's just the legacy Apps that can't adapt to it (sometimes lazy devs, sometimes its a 15 year old software... no one really to blame there).

    2. 0 | Reply
      scumdogmillionaire - 1 month ago
      In reply to the_zeni:

      It's not lazy devs. That blog post proves it. They had to dogfood this themselves before they realized how broken it was, in spite of years of devs complaining.

    3. 0 | Reply
      hrlngrv Alpha Member #100 - 1 month ago

      In reply to Finley:

      Don't PnP peripherals pass Windows enough info that their specs could be found with a web search? That won't help if you connect a 30-year-old VGA CRT to a new PC, but I figure every monitor sold in the last decade gives Windows enough info that it wouldn't be difficult to determine its physical dimensions.

  19. 0 | Reply
    wbhite Alpha Member #120 - 1 month ago

    I'm looking at you, VLC.

  20. 0 | Reply
    Waethorn Alpha Member #2235 - 1 month ago

    The problem is: Microsoft can't decide whether or not to kill off Win32 in favour of UWP, or actually implement new features into the classic API for a change.

    If there is enough demand for the feature, there's no reason why they can't do the latter.

    1. 0 | Reply
      hrlngrv Alpha Member #100 - 1 month ago

      In reply to Waethorn:

      MSFT's problem is that its enterprise customers account for more than 2/3 of its total revenues and likely an even higher % of its profits, so MSFT can't afford to annoy those customers. Today those customers depend on Win32 software for most of what they do, so MSFT dropping support for Win32 would force those customers into seeking alternatives to Windows.

      UWP isn't ready to replace Win32. If it were, where's the UWP Visual Studio? Or the UWP Office with DCOM add-ins, full VBA and scripting support including UWP equivalents for Win32 system calls, e.g., checking whether a spawned process is still running, full Automation?

      Total annual 3rd party enterprise/workplace software revenues may exceed MSFT's anual reveunes. If MSFT killed off Win32, which would be the more economical path for such 3rd party developers? Using UWP as it currently exists or moving to macOS and/or Linux? Also, just think what a US$25 million contribution to the wine project could produce, or IBM, SAP or Siemens buying CodeWeavers and making CrossOver a major product? ['Course if Oracle bought it, it'd effectively die.] These are implausibles as long as MSFT supports Win32, but they become serious threats to MSFT if MSFT were to kill Win32.

  21. 0 | Reply
    jwpear Alpha Member #2194 - 1 month ago

    I struggle with this scaling issue every single day with my SP4 connected to an external display. 

    I'll add that even the UWP apps scale incorrectly at times.  I have problems with UWP apps nearly every morning I sit down and unlock the machine.  The Mail app or Edge will be huge on the external monitor.  I have to unplug from the Surface Dock and then plug back up to correct.  I've had similar issues with undocking to go to meetings.

    I originally had two external displays, same resolution with slightly different physical sizes, connected through the Surface Dock.  Got so annoyed with the issues that I disconnected one of them.

    This is so fun.

  22. 0 | Reply
    mmcpher Alpha Member #245 - 1 month ago

    I suppose there are diminishing returns at some point, in pursuing ever higher resolutions, given the limits of vision and dexterity.   I was initially frustrated by scaling issues at every turn, when I went from Surface Pro to a larger monitor, whenever I increased the font size or tweaked the display settings on my phones.  Over time, however, I have gravitated towards apps and settings that fit and utilize the enhanced resolutions, and don't grieve for legacy apps whose developers don't bother to update or upgrade.  I wouldn't want to define future development by the limitations of legacy apps and devices. 

  23. 0 | Reply
    Thayios Alpha Member #1968 - 1 month ago

    I have the same issues with my Surface Book (1080p UltraSharp monitors). I've discovered that the legacy applications that don't scale right (like Skype For Business for some dumb reason) end up having to have an app compatibility flag LOCKED in the registry to prevent the High DPI scaling from screwing with things going from monitor to monitor.