When using Windows 10 on a high resolution monitor applications do not scale correctly.


You will find that the text boxes scale fine but control buttons seem to become malformed.

An example this can be seen below where checkbox and drop down menus are not correctly



There are a couple of options available since Windows Vista regarding display scaling.

Option 1:

Disable Scaling: This is a bit of a hammer approach; while the application will display correctly on a high resolution monitor everything will appear very small.

Option 2:

XPS style DPI Scaling: This uses the operating system defined scaling factors. As a result depending on the application you ended up seeing the application exhibit odd behaviour.

Option 3:

Bitmap Scaling: This draws the graphical components in an off-screen buffer and then re-draws them on the screen. Obviously this is somewhat more resource intensive so it is understandable why the previous option was adopted by default. Using bitmap scaling however seems to yield better results.


1) Enable Bitmap scaling by setting the following registry key


2) Windows needs to be told which applications you would like to scale using Bitmap scaling. This is achieved by creating a manifest file for each application exe.

  1. Open your favourite UTF8 text editor (for example notepad)
  2. Paste the following text into the editor
    SSMS in High-DPI Displays: How to Stop the Madness | spaghettidba

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
        <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*">
        <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b">
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
          <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      <asmv3:windowsSettings xmlns="">
        <ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="">false</ms_windowsSettings:dpiAware>
  3. Save the file as
    e.g. VpxClient.exe.manifest
    a. Filename: VpxClient.exe.manifest
    b. Save as type: All Files
    c. Encoding: UTF-8
  4. Place the file in the same directory as the application exe

Credit for this fix goes entirely to Gianluca Sartori and his excellent blog post here: