Hi-dpi Multi-mon with Surface Pro 3 – dpi-scaling tweaks


[Can’t decide what docking hardware to buy? Click for a comparison of many popular docking options]

Skip down to the bottom for a regkey workaround and a tutorial on how to setup your Surface Pro 3 for a seamless multi-mon experience.

Click here for Surface Pro 4 / Surface Book regkey

Update: Check out our demo video of this hack in action with the new 3-in-1 Dock:

http://blogs.msdn.com/b/danchar/archive/2015/06/30/3-in-1-dock.aspx]

 

 

Intro:

Windows multi-monitor support has improved quite a bit over the years and provides a great productivity experience that is, frankly, superior to other operating systems on the market. The experience is excellent when using multiple monitors of the same type and pixel density (dpi). But what if you have an old low-dpi monitor and a new hi-dpi monitor and want to pair them together? Or what if you buy a new laptop or tablet like the Surface Pro 3 with a beautiful hi-dpi screen but want to use it with your old monitors? Sometimes it just doesn’t look right:

You might think that it would be easy to just make stuff a bit bigger on one screen and a bit smaller on the other screen to get them to match up. But behind the scenes its quite a bit more complex than that.

 

Windows Desktop scaling:

Portions of Windows rely on a set of bitmap graphical assets that are designed to-the-pixel to look awesome. What this means is that if the asset is 40×40 pixels and displayed at 100% scaling on screen, it takes up 40×40 pixels and looks exactly as the designer intended. Depending on the physical dpi of the screen, that 40×40 pixel bitmap might be 2 inches tall (84″ 1080p television) or 1/10″ tall (Google Nexus 5 1080p phone). To account for different physical screen dpi and typical viewing distances, Windows has the ability to scale the size of these bitmap assets. If you scale to 200%, that 40×40 image becomes 80×80. Many of the assets in Windows are stored at multiple scaling levels so that they do not need to be scaled on the fly. This saves processing time and allows the assets to be optimized for each scaling level exactly rather than relying on a generic anti-aliasing or interpolation scheme. For Desktop, these pre-set scaling levels, or plateaus are 100%, 125%, 150%, 200%, 250% etc. When using these scaling plateaus with monitors that have different dpi, Windows 8.1 can set one scaling level for one monitor and another scaling level for a different monitor so that the sizes match up as closely as possible. This setting is done behind the scenes and uses a formula that takes into account the physical screen size and physical dpi to get the best match. Windows 8.1 does not expose an interface to the user to choose different dpi scaling per monitor. (Windows 10 does but still has some limitations.) Most of the time, the automatic matching works great, but not always. Windows has the ability to set an arbitrary system-wide scaling factor as well such as 107% but this disables the ability to set independent scaling factors per monitor and the scaling is done on the fly which can have a minor impact on performance but potentially a major impact on visual quality for some applications. Other portions of Windows use vector graphics which are suited to scaling by their very nature and work well across all scaling schemes.

Microsoft Office and many 3rd-party applications are designed with dpi-scaling in mind and work well at the various pre-set dpi-scaling plateaus. Some 3rd-party apps and legacy Microsoft apps that are dpi-unaware don’t look very good when scaled. Sometimes certain UI elements or fonts look a little blurry because of the generic anti-aliasing/interpolation scheme being used. In other cases, certain portions of the UI may be scaled and other portions are not. MSDN has provided developer guidance on how to account for dpi-scaling since the Introduction of Windows Vista Beta in 2005. 9 years later, most applications are following this guidance pretty well, but some still fail miserably.

 

More on viewing distance vs physical dpi:

Typical laptop/tablet users have the screen placed about 20-25″ away from their eyes. Desktop monitors are typically pushed back to 30″ or so. That extra 5-10″ is a big difference and the visual system has a much harder time distinguishing individual pixels at that distance. Windows takes advantage of this fact and makes assumptions about the typical viewing distance based on the monitor size, then chooses a dpi-scaling factor based on the viewing distance and physical-dpi combined. The goal is to have on-screen UI look approximately the same size across a wide variety of use cases. There are some standard approaches for choosing the ideal screen viewing distance based upon the properties of the screen, content being displayed and the abilities of the average human visual system: https://en.wikipedia.org/wiki/Optimum_HDTV_viewing_distance#Human_visual_system_limitation The key takeaway is that the closer your eyes are to the screen, the more dpi matters. What this means in practical terms is that if the screen is too far away you may not be able to see any additional detail with fancy 4k monitors.

This approach breaks down when you pair a large monitor optimized for a 30″ viewing distance with a laptop optimized for 20″ viewing distance and the result is that objects on one screen look larger than than on the other. The results look even worse if the physical dpi of the two screens are vastly different as is the case with modern laptops vs regular 1080p monitors. So what can be done?

Choosing monitors:

We already know that Windows works really well for most applications when the default scaling plateaus like 150%, 200% are used. What if you have a monitor with 100dpi and another with 115dpi, what scaling factor should be chosen for optimal results? Using the default scaling plateaus, it will be impossible to get the sizes to match up exactly. For example, if you have both screens at 100%, then UI will appear 13% smaller on the 115dpi screen (100/115=87%). If you choose 100% on the 100dpi screen and 125% on the 115dpi screen, the sizes match up closer but there are potential side effects. For example depending on the application, dragging a window from one screen to the other will cause an artifact where the window size will change as you cross over to the other monitor and all the text will re-align to be optimized for the other monitor. Because applications may handle this differently (FireFox vs Internet Explorer is a good example) user perception is an overall inconsistent experience. Many people don’t mind, but it certainly isn’t ideal.

To avoid some of these issues, you can choose monitors that either have the same physical dpi, or choose monitors with a pixel density that maps to the scaling plateaus like 125% or 150% very closely. Also there are some tricks where you can change the screen resolution to something other than the native panel resolution (something that is usually discouraged for visual quality reasons) yet achieve better results than built-in dpi-scaling.

 

Case study: Surface Pro 3 multi-mon:

The Surface Pro 3 screen is wonderful with a 2160×1440 resolution in just 12″ (216dpi). Given all the info above, how would you choose a monitor to pair with it? The ideal monitor would have the exact same dpi. Unfortunately, there are few monitors on the market with ~216 dpi:

But what if we target half that dpi? It turns out that a few standard monitor sizes are about half the dpi and quite economical:

Ok so what? Half the dpi still doesn’t match. Well If we could set 100% scaling on the desktop monitor and 200% on the tablet screen that would be ideal. Unfortunately because of the assumptions Windows 8.1 makes about screen size and viewing distance, the SP3 screen is set at 150% instead, so it doesn’t match up.

But there is a simple workaround. We already know that the further away the screen is, the less dpi matters. If the SP3 screen is ~30″ away right next to your desktop monitors, why not avoid software dpi scaling altogether and let the GPU and panel take care of it? Instead of using the native 216dpi, you can drop that in half to 108dpi to match the external monitor. GPUs and panels are *really* good at scaling to even integer divisors of the native resolution and look quite crisp. With the SP3 oriented in portrait configuration and held by hand right next to a 21.5″ panel it matches almost exactly:

 

Unfortunately, the Surface Pro 3 does not let you set this resolution or other 3:2 aspect ratio resolutions by default. You can set some lower-resolution 16:9 aspect ratio resolutions but that will result in letterboxing or black bars on screen. So we need to tweak things around to get the proper resolutions. The same methods can be used for other premium laptops.

 

 

Regkey method:

  • backup your system (use at own risk – modifying the registry can have side effects and precautions such as backing up your data should be taken before modifying your PC
  • download the .reg file
  • double-click the .reg file and click OK to import it into your registry
    • Having trouble importing a .reg file when downloading via the MS Edge browser in Windows 10? That’s probably because it is auto-renaming to .txt for safety. You can rename it back to .reg or import the .txt file from within regedit.exe. Or just download with Internet Explorer or FireFox instead.
  • Reboot OR follow these steps to reset the Intel display driver
    • open Device Manager
    • open the Display Adapters
    • right-click “Intel HD Graphics…” GPU and click “disable”
    • click “Yes”
    • after the monitors stop flashing, right-click the Intel GPU again and click “enable”
  • open System – Display – Advanced display settings in control panel and choose your preferred resolution

 

Add custom resolution to Surface Pro 3 (manual method):

  1. disconnect all external monitors and set the Surface Pro 3 screen to default scaling settings of 150%, then log off and log on
  2. download the latest 64-bit .zip package for the Intel 4th gen Core graphics driver: https://downloadcenter.intel.com/search?keyword=Intel+HD+4600
  3. unzip the driver and use the “Have Disk” method to force install over the default Surface Pro 3 driver:
    • start Device Manager
    • expand – “Display Adapters”
    • right-click on the Intel HD Graphics entry and select “Update Driver Software”
    • click “Browse my computer for driver software”
    • click “Let me pick from a list of device drivers on my computer”
    • click “Have Disk”
    • browse to the unzipped driver driver folder \Graphics\igdlh64.inf or similar
    • click “Open” then “OK” then “Next”
  4. after the driver installation completes, reboot
  5. Right-click on the desktop and select “Graphics Properties”
    • click on the word “Display” in the upper-right-hand corner to reveal the drop down menu
    • select “Custom resolutions from the drop down menu
    • click yes to the warning message
    • add 1080×720, 60Hz, 32-bit color, 0% underscan and any other resolutions you wish
    • Close the custom resolution tool
  6. Reboot
  7. Connect all your desktop monitors and use the Display control panel to switch the Surface screen to the new 1080×720 landscape or 720×1080 portrait mode
    • On the start screen type in “adjust screen resolution” to open the Display control panel
    • Click on the representation of the Surface Pro 3 screen
    • Click the Resolution drop down box and select your newly added resolution, then click “apply”
    • Click on the representation of the external monitor and click the “make this my main display” checkbox and click “apply”
    • Move the representations of the two monitors around to your liking
    • Close the Control panel and enjoy!

 

 

Other thoughts:

Low res for desktop, full res for mobile – switch automatically without logoff/login!

A benefit of this approach is that Windows remembers all the different multi-monitor configurations (topologies) that have been used in the past. So even though 1080×720 is set when connected to your specific external monitors, once you unplug those monitors, the SP3 will go back to the native 2160×1440 mode with 150% scaling. So you don’t have to sacrifice the fantastic screen. You get hi-dpi when using the SP3 closer to your eyes in tablet/laptop mode, and low-dpi when using it further away where you can’t see the individual pixels anyway. Its the best of both worlds! And you don’t need to logoff/login to switch back and forth. Just dock and un-dock.

 

Modern apps in Win 8.1 – use 1152×768 instead:

When the Surface screen is in low-res docked mode at 1080×720, it is lower than the minimum resolution required to run a modern app (1024×768) and you’ll get a resolution error. You can work-around this by switching the start screen to the desktop monitor and by making the external screen your main display so that apps open on that monitor instead. If you only use desktop applications, this isn’t an issue. but you can also try setting one of the other 3:2 aspect ratio resolutions like 1152×768 to re-enable modern apps on the SP3 panel in docked mode.

 

Other settings to try:

You may want to experiment with different dpi-scaling settings in addition to the resolution settings. For example, I keep the “system dpi setting” at 150% which is the default. When the tablet is not docked, everything is scaled to 150%. When the tablet is docked, the tablet screen resolution drops and its scaling factor is set to 100% as is the external screen. But if you run dxdiag.exe in docked mode and click “save all info”, you’ll see the “system dpi setting” is still 150%. This way often works well but you may notice many Adobe applications look too big when run in docked mode because they are honoring the system dpi setting of 150% instead of the per-monitor dpi setting. That is the fault of the application, not the Surface or Windows. One workaround for these programs is to right-click on the .exe file, and on the compatibility tab under settings, ensure that “disable display scaling on high DPI settings” is checked. You may notice that if you keep programs open when docking and undocking, their on-screen size may change after the transition. If this bothers you, just close the app and re-start it. This gets better with the most recent Windows 10 update, but it is not entirely solved. In any case this is what works for me with Windows 8.1 and Windows 10 and I love my Surface Pro 3 even more with these simple tweaks.

 

References:

 

Back to main blog: http://blogs.msdn.com/b/danchar/

Surface_3_Surface_Pro_3_Custom_resolutions2.reglick

Comments (66)

  1. Danchar4 says:

    Here are some 3:2 aspect ratio resolutions you could add to pair with other monitors:

    • 1080×720 (200%) 108 dpi (effective) (lower than 1024×768 so can't run modern apps)
    • 1152×768 (187.5%) 115dpi (effective) (this is the minimum 3:2 ratio that will allow running modern apps)
    • 1200×800 (180%) 120 dpi (effective)
    • 1440×960 (150%) 144 dpi (effective)
    • 1728×1152 (125%) 172 dpi (effective)
    • 1800×1200 (120%) 180 dpi (effective)
    • 1920×1280 (112.5%) 192 dpi (effective)

    There may be subtle aliasing artifacts with these settings but that is the case when using almost any non-native resolution. I'm actually quite surprised that the original Surface GPU driver doesn't have some of these resolutions available by default.

  2. Limit says:

    Does changing your driver from the one microsoft provides to the intel drive have any affect on your battery life?

  3. mirth18 says:

    Maybe I missed it, but what is the reason for installing the old driver?  Just to be able to install the custom resolution?  Can we not just do that with the newest driver?  I see I have CustomModeApp in system32 already.

  4. mirth18 says:

    I guess I spoke too soon as nothing happens when I run it.  I will try to older driver.

  5. Danchar4 says:

    Rwerksman on tabletpcreview.com suggests a method to set the registry directly rather than using the Intel custom resolution tools: forum.tabletpcreview.com/…/surface-pro-3-custom-resolution-s-registry-entry.64713

    I have been meaning to use the sysinternals tools to trap the regkeys that the custom res tool sets, especially since the custom tool is conspicuously missing from Intel's latest drivers, but I never got around to it. I'm going to have to test this out on a few machines. I'm not sure if the settings under HKEY_LOCAL_MACHINESYSTEM CurrentControlSetControlClass{4d36e968-e325-11ce-bfc1-08002be10318}  are guaranteed to be the same on all machines or if it is different on each SP3 SKU (Core i5 vs Core i7 etc.) and different drivers installed by Windows Update or from intel.com.

     

    But I've added Surface_Pro_3_Custom_resolutions.reg to the main post so you can use it at your own risk to add a bunch of 3:2 aspect ratio resolutions.

    Thanks Rwerksman for the tip!

  6. Danchar4 says:

    @Limit @mirth18

    As far as I know, only the older driver has the custom resolution tool so you need this one to do the changes. I have not found any difference in battery life with the different drivers.

  7. NicNZ says:

    @mirth18, @Danchar4

    I also had the CustomModeApp pre-installed on the SP3 – and also found it didn't function on the default driver.

    After installing the latest Intel driver (3960) and having the Intel control panel available, the CustomModeApp does open the correct screen, and has happily added 1440×960 resolution that I wanted – for me this provides a great match with external 27" 1440p monitors I use.

    I did try adding the registry key mentioned above, but got no result and removed it.  Having made the changes mentioned above there is now a similar key (C_Modes_LFP_2b) but under the '0002' folder rather than '0001' as mentioned in the forum post.

  8. srinivas says:

    I have tested by installing the Surface Pro 3 driver from Intel, but didn’t get the required results.

    Scaling is not changing automatically when we disconnect the external monitor, the surface monitor is not going to the default settings until we log off from the profile.

    Also we need to set the scaling for the external monitor when we configure the inter graphic properties for the first time. This works great only if we use external monitor  as the main and only display.

    There is an issue with the intel  drivers also, tried installing the intel suggested driver win64_15363.exe, but the driver is rolling back to the windows preferred driver 10.18.10.3960, which is an old driver from windows.

  9. Danchar4 says:

    @srinivas, You need to download the .zip file not the .exe and use the have disk method to install. Also the dpi scaling factor does not change automatically, it is only the screen resolution that changes. The steps above have worked for many people already. Can you try removing any drivers that have been added and put the machine back to factory state then try the steps above again?

  10. srinivas says:

    Hi Dan,

    I did the same way using the disk method. You mean the screen resolution for external monitor or the surface monitor.

    Thanks

    Srinivas

  11. Danchar4 says:

    @srinivas, yes the settings are only intended to change the surface screen – the external screen stays at its default resolution.

  12. srinivas says:

    Dan, what about the scaling on the external monitor. can we set different scaling on surface screen and external monitor.

  13. Danchar4 says:

    @srinivas Windows 8.1 does not allow user configurable per-monitor/independent scaling settings. Perhaps in the next OS release…

  14. Neko says:

    Correct registry location for "C_MODES_LFP_2b" key is:

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4d36e968-e325-11ce-bfc1-08002be10318}002]

  15. Danchar4 says:

    @Neko,

    Thanks. I found that some machines use 002 and some use 001. Therefore in the .reg file attached to the post I set both keys so it will work an all systems.

  16. Alberto Silva says:

    Has anyone tried Windows 10 on the Surface Pro 3 to check if it handles better this scenario, like having a scaling factor defined per monitor?

  17. Neko says:

    Windows 8.1 saves monitor configurations. For me the best scenario is to use setup like this:

    • Surface display 2160×1440 150%  (only Surface display) – Best for anywhere use/mobile work.
    • External monitor 1920×1200 100% (only external monitor, Surface display is off) – Best for home/work Surface use. Bottom edge of monitor is above Surface screen so I can place Surface in front of monitor.

    There is only necessary to log off and log in back when I change displays or I want to switch from mobile mode to desktop mode. Display change and scaling is setup automatically by Windows. When I first time connect external display I setup it: Project > External display only.

    So it's works like this:

    1. Turn on
    2. Surface display only 2160×1440 150%
    3. Log off
    4. Connect external display or dock to Surface Docking Station with connected display
    5. Log in
    6. External display only 1920×1200 100%
    7. Log off
    8. Disconnect external display or undock from Surface Docking Station
    9. Log in

    …..

    This setup works flawlessly for me.

  18. Mikael Svenson says:

    I ended up doing 1178×1152 on the surface and have 2560×1440 on my external monitor with 125% dpi settings. Seems to work pretty good 🙂

  19. George says:

    Thank You, This was a life saver.

    Just to note, that the first time SP3 refused to boot up for 5 mins after adding the custom resolution. (Step 6)

    Using 1200*800 happily, Scaling at 100%.

  20. Søren Spelling Lund says:

    Can I just say that it pretty wild that a post like this even exists?

    I bought the Surface because it's an interesting take on PC hardware, so interesting in fact that it lured me back to the world of Windows. As a stand alone device it's awesome, loving the hell out of the it. Beautiful display, interesting hardware. Awesome!

    But when I try and use it as a laptop replacement as it's advertised to be, things end up a little different. Basically I now have to deal with posts like this to make it work properly with multi mon setup.

    At the end of the day I ended up installing a custom display resolution to disable scaling altogether, becuase it seems the least of the couple evils I can pick from to make it work properly.

    I realize that it's a Windows problem, but it's incredible to me that a device like this basically has me turning off one of its best feature to make it work properly in a work setting.

    It works and I get by, but why did I even have to spend the time figuring this out? The Surface to me is the Windows device made by Microsoft to "just work" seamlessly with their OS, but it doesn't for some reason.

    Fingers crossed that Windows 10 will introduce independent display scaling to fix this issue.

    /From  a semi-happy Surface user

  21. Danchar4 says:

    @Søren Spelling Lund,

    I hear that some bright folks are working really hard on improving this. Like I mentioned in the article, its a little more complicated than just making stuff on screen a little bigger. I reckon you'll be a fully-happy Surface user very soon…

  22. Dan says:

    For me it does not work.

    Maybe it's because I've got one monitor (2560×1440) plugged in at the dock and the other one (1920×1080) in the Surface itself…

    If I dock both monitors out the scale is at 100% instead of 150%.. that drives me crazy -.-

  23. streatsi says:

    hi, i tried the reg key method (just downloaded and hit run) and for a while it worked but now i can't get any displays to show using either the dvi port on the surface pro or the port on the docking station.

    any ideas.

    also can I just remove the new reg key and see if that helps again

  24. Danchar4 says:

    @streatsi

    Its unlikely that the regkey change caused your issue of being unable to use external monitors. The regkey doesn't do anything aside from allow you to set additional screen resolution modes on the surface pro 3 built-in panel.

    Were you able to switch resolutions OK? What changed on your PC between then and now? What happens when you press winkey+P and choose duplicate or extend?

    You might want to share additional details on the http://answers.microsoft.com forum since the helpful folks there will be better equipped to help you with general Surface and Windows problems.

    You can certainly use the advanced tool regedit.exe to remove the keys if you wish. Just open the .reg file in notepad to see which keys to edit and use any of the guides on the Internet on how to use regedit responsibly if you're not familiar with it.

  25. Shantanu says:

    Hi! Thanks a ton for this blog post. I received my new SP3 from my company a few days back and finally hooked it up with my 2, 24" monitors that are 3+ years old. Much as I liked the SP3's display at 100%, it became near impossible to use once I started to use it like a regular laptop, so I scaled up to 150% which naturally resulted in the 2 monitors scaling up as well, thereby diminishing their ability to display a lot of data without having to scroll. I finally found this blog post and followed the instructions to the T and it worked like a charm. Thank you so much! I did try resolutions higher than 1080 x 720 but they weren't that great. so I have stuck with 1080 x 720 for now although that means that I can only the SP3 for things like IM or Windows Explorer. Thanks again.

  26. Mike says:

    I followed Neko's method and it is the only solution I've found that works the way I want.

    Log in and set scaling and resolution undocked.

    Log out

    Dock, login, then set scaling and resolution.

    Log out

    Just make sure to log out between docking and undocking to get correct scaling.res settings

    In my scaling options, there is a checkbox to make scaling the same across all monitors.  UNCHECK this box!!!!!!!!

    My SP3 gets the slider moved 3/4 and my 1680x1050monitors get it slid all the way to the beginning.

    My sp3 res is set to Native.

  27. @LtCmdrKeene says:

    Hi Danchar4, I found your post absolutely amazing and link to it in my recent article at cmdrkeene.com/dpi-scaling-with-multi-monitor

    However, I'm not having luck with the Registry key method, it added many resolutions to my options, but none are the 1080×720.  There's a 1280×720 that is decent, but it doesn't fit the Surface panel so it's black at the top and bottom.

    I'm using Windows 10, I'm going to reboot into Windows 8.1 and try it there.  And either way I'll probably go back and try to use the long method in Windows 10.

    I have to say that even in my almost-quite-there resolution at 1280×720, I can already tell I'm going to enjoy this much better than leaving it at full-resolution with stretch scaling. For one thing, apps don't need to be aware of anything to look right in this setup.  Absolutely fantastic!

  28. Andy says:

    Great post and really helpful comments and although I don't have a Surface Pro 3 I was wondering if anyone might be able to help me? I have a new Dell Inspiron 15 7548 which has a 4K (3840 x 2160) screen and am  struggling to get good scaling / compromise between this and a 1920×1080 21.5" external screen extending the display via the laptops HDMI port. Per screen scaling doesn't seem to work as even with "Let me choose one scaling level for all my displays" UNTICKED and scaling set a few notches from the top with the 4k laptop set as my main display the external screen looks rubbish and I also get a "Your resolution is lower than 2400 x 1800. Some items might not fit on your screen" warning when in Screen Resolution settings for the 1920 x 1080 display.

    Thanks

  29. dudeinco says:

    Well, late to the game, but I did all this – the auto resolution changing works great… The DPI is not remembering docked vs not docked, however.

  30. Paolo says:

    Really all this all these words for something that is clearly broken? just bought a surface pro 3, with dock station, running win10 and there is no way it looks good on both the surface high dpi and the external lg ultrawide monitor! It just sucks! and all those things where quite expensive. it would be enough to let me choose what's best for me 100% for the external and 150% for the surface. I'm seriously considering switching back to Apple.

  31. Danchar4 says:

    @LtCmdrKeene, are any of the 3:2 aspect ratio resolutions available for you? I haven't actually tried this hack on Win10 myself but others said it worked for them. Perhaps you could post a screen shot showing what resolutions are available. Have you tried using the manual approach with the Intel control panel rather than the regkey? I haven't checked but perhaps the regkeys are different in Win10. BTW thanks for the kind words on your site.

    @Andy Your laptop has 282dpi while the external display is 103dpi. It will be difficult to get these to match perfectly since they just so far apart. But If you want items to appear roughly the same size on both screens when they are next to each other, set the laptop screen to 1536*864 (250% scaling). Just use the Intel control panel to add that custom resolution. With Win10 you'll be able to independently set the scaling factors to 250% on the laptop vs 100% on the external. In Win8.1 I think it chooses the wrong one by default for this config because its just over some limit and if you use the "one scaling factor for all" its just looks terrible in a setup like this. Win10 will be way better for you.

    @dudeinco That's expected. DPI switchover requires a logoff/logon. But with my approach you won't need to do that for most applications

    @Paolo. Sorry its not working out. Make sure to let Microsoft and the Surface team know about your problems. I don't work on the Surface team so there is only so much I can do as a single engineer in a different team. I recommend taking a picture of what exactly is wrong and try tweeting it @SurfaceSupport. There are some really smart and helpful folks there that may be able to help. You could also try updating to Windows10 which includes independent per-monitor scaling settings. Macbooks are great, especially when you load Windows on them, but they lack touchscreens and the flexibility that Surface offers.

  32. Andy says:

    Thanks for taking time to reply to me (and others) here in such detail. I'm sure Windows 8.1 was meant to allow you to set independent scaling on each screen wasn't it? From several plays with Windows 10 on a virtual machine unless something major changes between the latest preview build and final release I'm not sure I could live with the horrible new icons in 4k alongside losing a lot of what I like in Windows 8.1. Users who were happy with Windws 8.1 seem to have been thrown under the bus with the new worst of both worlds changes to try and appease those who can't get past the metro start menu but that's a whole other thread / post 🙂

  33. Danchar4 says:

    @Andy
    Win8.1 supports different scaling settings per monitor, but the settings are chosen algorithmically by Windows behind the scenes and it doesn't always choose correctly – hence the existence of this article. Win10 allows the user to choose the settings, however even on Win10 it seems folks are still think there are benefits to my approach here.

     

    reg key updated to work with Win10 – it now sets the /0000 in addition to /0001 and /0002 driver reg paths since the Intel driver seems to install to /0000 on Win10.

  34. adam says:

    i am so glad i found this. thank you! i have been banging my head against the wall with this for ever. finally out of everything i've found on the internet, a viable workaround!

  35. Jan says:

    Hi there – just an addition: The driver on the Intel homepage is newer than the one coming from microsoft now. MS installs version 10.18.14.4170, dated 2015/03/16 – Intel gives us version 10.18.14.4222, dated 2014/05/22.

    With this version, I had to uninstall the existing driver that came from Microsoft in device-manager while setting the surface offline with flight-mode as the driver would come back faster than I wanted and could not be updated directly. With the Microsoft basic VGA driver, I was able tu update it with the driver included in the ZIP file by Intel, the other steps worked as described.

    During my tests I stumbled accross the DPI settings not being corrected during docking in and out, that breaks it for me. The resolution on the surface integrated monitor is not my problem, it is only the scaling that can not be set per monitor.

    I hope Windows 10 will do it better, for now I am working with the native resolution on my surface, scaling at 125% and I have put my docking station not so far from my eyes 😉

  36. Jan says:

    Hi again – my surface just installed a new firmware update released on 2015/05/19 (http://www.microsoft.com/…/pro-3-update-history) which seams to prepare the device for the new graphic driver 10.18.14.4170. This new graphic driver version could come with another update by Microsoft, but as I already installed the driver manually following this blogpost it does not appear here. Does it appear on your devices where you did not manually change the graphic driver?

  37. Danchar4 says:

    Jan, if you would like the Microsoft provided driver to install, just uninstall the intel.com driver via device manager and make sure to click the checkbox "Delete the driver software for this device." reboot, and then check windows Update. The very latest Microsoft approved driver ought to install automatically.

  38. Jay says:

    Hello –

    I just upgraded my SP3 to windows 10.  I had set up custom resolutions prior to upgrading and they all transferred perfectly.  But just now, I was changing some settings and I lost all my custom resolutions.  The intel driver page for Windows 10 drivers gives a 404 not found error.

    Any tips?  I miss my custom resolutions!

  39. Danchar4 says:

    @Jay

    You probably got a Windows Update that included firmware and a new made-for-Surface driver. Not to worry though, you can just re-apply the .reg file above without changing anything else, reboot and get those resolution options restored.

  40. sawy3r says:

    Thanks for pulling this info together! I followed your steps and have my setup working perfectly now. This is the one part of the Surface that really bugs me, so poorly implemented…

    Cheers!

  41. Rocky says:

    Think this will work on the Surface Book being that it has 2 GPUs?

  42. Danchar4 says:

    @Rocky

    This same trick will work for SP4. I haven't tried on SurfaceBook yet but it ought to work fine using the updated regkey here:

    blogs.msdn.com/…/surface-pro-4-hi-dpi-multi-monitor-optimization-regkey.aspx

  43. Saitama says:

    Thank you. Would you mind adding the resolution 912×608? Its the resolution height and width resolution devided by 3. There are a lot of games that get very playable at 800×600 compared to the ,,around HD" resolutions, and therefore would be very useful, because no black bars and its cleanly downscaled.

    Kind Regards

  44. Saitama says:

    Thank you very much. Would you mind adding the 912×608 resolution? Its an important one for gaming at the Surface Pro 4 as it makes a lot of games very playable and its the main resolution cleanly divided by 3.

  45. Chris says:

    Here is the key for the Surface Book.

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4d36e968-e325-11ce-bfc1-08002be10318}000]

    "C_MODES_LFP_bb"=hex:04,00,00,00,04,00,00,00,bb,00,00,00,08,07,b0,04,08,50,00,

     00,00,60,49,c4,0a,78,09,00,00,08,07,00,00,08,07,00,00,77,09,00,00,80,07,00,

     00,3f,08,00,00,18,23,01,00,da,04,00,00,b0,04,00,00,b0,04,00,00,d9,04,00,00,

     b1,04,00,00,b3,04,00,00,3c,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,00,

     00,00,00,0a,00,00,00,01,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,80,

     07,00,05,08,50,00,00,00,40,b2,5b,0c,30,0a,00,00,80,07,00,00,80,07,00,00,2f,

     0a,00,00,08,08,00,00,d7,08,00,00,8c,36,01,00,2d,05,00,00,00,05,00,00,00,05,

     00,00,2c,05,00,00,01,05,00,00,03,05,00,00,3c,00,00,00,04,00,00,00,00,00,00,

     00,00,00,00,00,00,00,00,00,0a,00,00,00,01,00,00,00,00,00,00,01,00,00,00,00,

     00,00,00,00,00,a0,05,c0,03,08,50,00,00,00,c8,44,d3,06,80,07,00,00,a0,05,00,

     00,a0,05,00,00,7f,07,00,00,f8,05,00,00,8f,06,00,00,f8,e8,00,00,e2,03,00,00,

     c0,03,00,00,c0,03,00,00,e1,03,00,00,c1,03,00,00,c3,03,00,00,3c,00,00,00,04,

     00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,0a,00,00,00,01,00,00,00,00,00,

     00,01,00,00,00,00,00,00,00,00,00,90,06,60,04,08,50,00,00,00,50,d4,59,09,d0,

     08,00,00,90,06,00,00,90,06,00,00,cf,08,00,00,f8,06,00,00,af,07,00,00,a4,0f,

     01,00,87,04,00,00,60,04,00,00,60,04,00,00,86,04,00,00,61,04,00,00,63,04,00,

     00,3c,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,0a,00,00,00,

     01,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00

  46. Shahrum Amiri says:

    Thanks so much for sharing this. I came across a post on Reddit (http://www.reddit.com/…/surface_pro_4_scaling_with_applications_issues_in) that led me here in hopes of fixing issues with my Surface Pro 4. I'm afraid that even with the 1368×912 at 100% DPI that objects on my surface are still blurry. According to a comment on Reddit, the sweet spot is 1624 x 1080 at 100% scaling. Are you able to add that to your registry tweak for us? Thanks so much!

  47. alex says:

    Why all of these custom resolutions lower than native make text and icons on my SP4 display look blurry?

  48. Steve says:

    The .reg file worked great on my Surface pro 4.  Is there anything available to do the same on a Surface 3 – not pro.

Skip to main content