How to set systemwide "XP style DPI scaling" in Windows 8.1?

13

4

I run my ThinkPad with a system DPI setting of 140%. In Windows 7 and 8, I enabled the "Use Windows XP style DPI scaling" checkbox in the Custom DPI Setting dialog. When this setting is off, non-DPI-aware applications get DPI virtualization via bitmap stretching, which results in large but fuzzy text. Turning on the checkbox disables this bitmap stretching, so non-DPI-aware apps get smaller text but without the fuzzy stretching. I find most apps to be more readable with the smaller crisper text, so I enable XP style scaling (i.e. disable DPI virtualization).

Windows 8.1 RTM has removed this option completely. After upgrading, all of my non-DPI-aware apps are running with ugly bitmap stretching. I'm able to fix this by going into the Properties for each app and setting the "Disable diplay scaling on high DPI settings" box in the Compatibility tab, but that is a bit of a pain.

Is there any way to restore the systemwide XP-style DPI scaling in Windows 8.1?

Michael Geary

Posted 2013-09-10T17:08:39.117

Reputation: 791

Try to set UseDPIScaling in HKLM\SOFTWARE\Microsoft\Windows\DWM to 0. I have no idea whether this will work. – kinokijuf – 2013-09-26T08:38:32.417

I can reproduce the problem now. DPI 120 gives me nice XP-style scaling, DPI 144 a blurry mess irregardless of the scaling setting. – kinokijuf – 2013-09-26T13:53:43.613

Further experimentation shows that i get the duplo interface only for DPI up to 120, and DPI 121 gives me a blurry mess. You should file a bug. Also, consider that DPI settings other than 96 and 120 were never supported by MSFT… – kinokijuf – 2013-09-26T15:33:36.987

Answers

8

Short answer (AFAIK): You can't anymore, as they reworked the DPI system in 8.1 to better adjust to newer HD displays and more complex setups (perhaps at the expense of running old, non-DPI-aware programs).

Check this out, from the "Windows Extreme Blog" (blogs.microsoft.com, Jul 15, 2013): Windows 8.1 DPI Scaling Enhancements

Blurb:

With the recent proliferation of high-DPI tablets, notebooks, and external displays these high-DPI and DPI scaling issues became an important consideration for Windows 8.1.

Windows 8.1 DPI scaling improvements are primarily focused on:

  • Optimizing the usability and readability of high-DPI displays
  • Providing a uniform experience [on] multi-display systems
  • Empowering developers to optimize app-specific scaling based on display DPI

Ƭᴇcʜιᴇ007

Posted 2013-09-10T17:08:39.117

Reputation: 103 763

1Thanks, I had a feeling this would be the case. It is a bit odd: I could in theory go to the Properties for every app I ever run and disable display scaling for each of them. So why not allow the global setting any more since it's essentially the same thing? Ah well, I guess I have some property-opening-checkbox-clicking to do! :-) – Michael Geary – 2013-09-10T17:38:13.353

"...why not allow the global setting any more..." I wasn't suggesting you should have an answer to that! Was just grumbling about it... – Michael Geary – 2013-09-10T18:07:49.670

I'm glad you wouldn't expect me to know why MS does anything. ;) I just figured I'd present some of their reasoning as to why it's gone, and may not be possible to bring back. That doesn't mean someone else won't (eventually) come along with a solution to set all those boxes at once - or alike. It happens. ;) – Ƭᴇcʜιᴇ007 – 2013-09-10T18:21:41.617

If the downvoter happens to read this, it would be helpful if you would share the reason for the downvote. At the moment, this appears to be the correct answer. Another answer suggests turning on the "one scaling level for all my displays" option, but that doesn't work for me. So whoever downvoted this answer, do you have a working solution? – Michael Geary – 2013-10-21T03:44:21.560

7

Long story short, you can set this globally by selecting "Let me choose one scaling level for all my displays" and signing out then back in.

This is how I found out: I ran into the same problem.

First I started fixing individually with compatibility settings but it soon becomes a headache because of so many different programs with this issue.

So reading some pointers you learn that this option is meant so that each program can be adapted to different displays working in parallel so that it is readable in each by scaling it up as a bitmap which renders it larger but ugly (blurry) in many cases - granted, some might want it on a single display but then they can use some optimized size value that will still render well.

So now Windows applies this to any monitor including the default even if it is the only one.

I figured that maybe, if you told it to just use the same scaling on all displays it would no longer need the overhead of the per-display bitmap routine and disable it altogether -or at least match the optimized values that had always been available and good.

The scaling functionality would simply match the manually selected values (Smaller - 100%, Medium - 125%, Larger - 150%, custom defined, etc.) without the per-display (bitmap) method which had always rendered nicely in the past.

Seems I guessed right since now all programs render quite beautifully and even larger which I was not expecting since the blurry option was actually also yielding smaller text in my case (I did change some text sizes to make touch display usage easier, maybe it was that.)

Since this is all I needed, I leave it to others to find out and clarify the exact mechanism of how this worked to improve what are simply conjectures of mine.

bokusama

Posted 2013-09-10T17:08:39.117

Reputation: 171

Hmm... I've actually had the "Let me choose one one scaling level for all my displays" setting turned on for some time and it doesn't remove the blurry scaling on my system. What percent do you have the scaling set to? Mine is 140%. I wonder what other difference between our systems might be affecting this? – Michael Geary – 2013-10-21T03:39:54.347

2OK. So seems that default values indeed produce optimized results. I was at 125% (Medium) with all well and tried 140% and programs started looking bad again despite one scaling for all displays. So seems it is about both telling it not to modify it on any display and set it to a "good" value. Seems they'll make you choose unless you want to set individually :-/ – bokusama – 2013-10-21T05:20:51.673