How to take screenshot at "100% size" on a high-DPI with scaling enabled?

Seemingly simple thing but I can't figure it out.

I'm on Windows 10 with a high-DPI monitor for which I have 125% scaling enabled. The screenshots look good (crisp, correct size) in local apps like Paint.NET which also take high DPI into consideration but when posted online, e.g., here, it is too large and blurry:

too large and blurry

I get it, everything is made 125% larger by Windows so the result is 1.25x bigger than what I see locally but the result simply does not look good. I tried to downscale it by the factor of 0.8 (= 1/1.25) but the result is again not great (natural size but a bit blurry):

downscaled

I should stress that I understand the DPI calculations behind the scenes and the result is "correct" in a mathematical sense of the word but I'm still looking for ways to make screenshots look good for the readers (good = as if they were taken on a system with 100% DPI scaling).

(Changing DPI and logging out of Windows every time is not a practical option for me.)


Solution 1:

I would also have liked a good solution for this problem, but I don't believe that one exists. I will explain below why I think so.

When one specifies 125% scaling for Windows, this means that Windows smears every pixel over 1.25 pixels, or every 4 pixels over 5. This has the effect of the screen seeming larger, while really being smaller, and makes the text more readable.

But this also makes everything a bit blurry because what is displayed on the display is a processed version, with the pixels being interpolated from their context, so that not even one pixel is left as it was originally drawn by the application.

What Screen capture does is simply copy pixels from the screen. It has no way for accessing the original content issued by the application(s), so that this is really all that it can do. For 125% scaling it will then have 5 pixels for every original 4 pixels.

Down-scaling the captured image screenshot by 80% will return these 5 pixels to 4, but this is another resize of the image and another interpolation of the pixels, so the pixels are even further away from the original ones.

I do not see any solution to this complexity, except taking the screenshots with the screen scaling at 100%, which in the latest version of Windows 10 is immediate and does not require a reboot or even a re-login. You may compensate for the resulting small screen by using a screen-capture program such as Greenshot, which displays a magnifier for the screen-area where is positioned the cursor.

There are programs that can change the screen resolution to others that are supported by the monitor without a reboot, but they are rarely a solution since they are a hardware solution, while Windows scaling is done in software. I explain this below with an example.

For example, my screen has a resolution of 3840x2160 and my scaling is set to 150%. The resolution that matches natively that scaling is 2560x1440, but this resolution is not natively supported by my display adapter, so I cannot change to it. The situation might be different with your own adapter, as you may easily verify.

I don't really see any other satisfactory solution to this problem, except temporarily changing the scaling to 100%, unless Microsoft decides to supply one in a future version of Windows.