Guide: Fixing External Monitor Scaling and 'Fuzziness' Issues with MBP and OSX

Discussion in 'MacBook Pro' started by seb101, May 2, 2019.

  1. seb101, May 2, 2019
    Last edited: May 2, 2019

    seb101 macrumors member

    Joined:
    Apr 3, 2014
    #1
    Quick guide to enable correct color mode and 125% scaling on external Dell 4K (2650 x 1440) monitors with your MacBook. (Instructions for Windows and OSX).

    This gives you a smoothly scaled external monitor experience which keeps UI elements approximately the same ‘size’ as you drag them between the Retina and external display.

    Windows (approx 10 seconds)

    1. Plug in monitor
    2. Right Click Desktop
    3. Click ‘Display Settings’
    4. Drag Scaling slider to 125%
    5. Click Apply
    6. Everything looks great.

    OSX High Sierra/Mojave (approx 2.5 hours)
    1. Plug in monitor
    2. The screen doesn’t look right, text and black on white elements are blurry and have chroma ‘bloom’ around them.
    3. Open System Preferences
    4. Click Displays
    5. Look relevant settings
    6. There are none.
    7. Google it, not sure the exact issue, so try ‘OSX external display fuzzy text’
    8. Read 4 top links that are a collection of forum posts where die-hard Mac users tell me that:
      1. This is just the way it is with Mac
      2. OSX is ‘better’ because it displays fonts differently and this can make them blurry. Deal with it.
      3. My eyes are at fault because I’m comparing it to a Retina screen now and the Retina is SO good that everything else looks blurry.
      4. I need to buy an Apply display
      5. Try enabling or disabling font smoothing.
    9. Decide to try the font smoothing thing.
    10. Open System Preferences
    11. Click General (weirdly this is not considered a ‘Display’ setting)
    12. Font smoothing is enabled, so I try disabling it. It doesn’t fix the problem.
    13. Re-enable font smoothing.
    14. Back to Google.
    15. Finally find a forum post that explains the problem is that OSX incorrectly forces the color mode on some external screens to YPbPr/YCbCr instead of RGB.
    16. Open System Preferences
    17. Click displays
    18. Look for Color Mode setting
    19. It does not exist in OSX
    20. Eventually find this excellent blog post with a fix: https://spin.atomicobject.com/2018/08/24/macbook-pro-external-monitor-display-problem/
    21. Jaw drops at complexity of the fix - recovery mode?!!?!
    22. Decide to go for it.
    23. Download the script from GitHub
    24. Run the script - it writes a new EDID file.
    25. Shut down Mac
    26. Boot into Recovery Mode
    27. Open Disk Tool
    28. Mount the FileVault Encrypted disk
    29. Enter password
    30. Close Disk Tool
    31. Open Terminal
    32. Copy the EDID file created to the correct System folder
    33. Reboot
    34. IT WORKS!!! No more text blurring and color bloom.
    35. Celebratory beer.
    36. Things are still too small on the external display however, time to tackle the Scaling.
    37. Open System Preferences
    38. Click Displays
    39. Click the ’Scaled’ radio button.
    40. Weird, all it does it give a list of alternative resolutions.
    41. Try some alternative resolutions, they all look blurry and awful, as expected.
    42. Look for other settings related to Scaling.
    43. There are none.
    44. Back to Google
    45. Read through the top links which are all blog posts where die-hard Mac users tell me:
      1. This is just how it is with Mac.
      2. I need to buy an Apple approved display.
      3. That lowering the resolution is the same as scaling (FML you idiots)
    46. Eventually find some posts that talk about specific ‘HiDPI’ scaling options by pressing the ‘Option’ key while clicking the Scaled radio button.
    47. GO back to Display preferences, hold down Option and click Scaled.
    48. Still there are no HiDPI options.
    49. Google how to enable HiDPI
    50. Find this article: https://www.tekrevue.com/tip/hidpi-mode-os-x/
    51. Open Terminal
    52. Run the command
    53. Go back to Display Preferences
    54. Still no HiDPI options
    55. Back to Google.
    56. Eventually discover that OSX only natively supports HiDPI modes on monitors with specific Aspect Ratios. (This is completely undocumented by Apple - Thanks Apple!)
    57. Google how to set custom resolutions.
    58. Find post talking about some software called SwitchResX.
    59. Download SwitchResX
    60. Baulk at the bizarre user interface.
    61. Find the ‘supported’ resolution options for my Screen - there are lots more than in the Apple settings dialog, including some HiDPI ones.
    62. Try some HiDPI options, they look good but they are the wrong Aspect Ratio, so there black bars at the sides of the screen.
    63. Back to Google “custom HiDPI resolutions in OSX”
    64. Links back to SwitchResX FAQ https://www.madrau.com/support/supp...n_I_define_a_new_HiDPI_re.html?TB_iframe=true
    65. Open the ‘Manual Resolutions’ tab in SwitchResX
    66. Discover this part of the app only works if you disable System Integrity Protection.
    67. Can’t quite believe that you need to disable SIP to set a custom resolution, so Google it, end up back at the SwitchResX website where the author has a similar opinion. https://www.madrau.com/support/support/srx_1011.html
    68. Sigh.
    69. Shutdown
    70. Restart in Recovery Mode
    71. Open Terminal
    72. Enter command to disable SIP
    73. Reboot.
    74. Open SwitchResX
    75. Go to Manual Resolutions tab.
    76. Promted for ‘Scaled resolution’ parameters. No documentation on this.
    77. Take a guess that as I want 125% scaling I need to multiply my monitors Native resolution by 1.25 in both dimensions.
    78. Save the Custom resolution.
    79. Try to apply it and eventually realize that you have to Reboot again before this can be applied.
    80. Reboot
    81. Apply custom resolution.
    82. Partial success! Scaling has worked, aspect ratio is correct but everything is way to ‘big’ on the screen. Looks more like 175% scaling.
    83. Scratch head and have a think. Realize I did my math wrong. If I want 125% scaling I want to create a virtual resolution of 175% of my screen’s native resolution which will HiDPI scaled down to an effective resolution of 85% of my native resolution making everything appear… ??? 15% Larger?? Brain hurts. Close enough I decide.
    84. Try it with virtual resolution of 4480 x 2520.
    85. Reboot to save the new resolution.
    86. Open SwitchResX
    87. Set the screen resolution to the new manual HiDPI setting.
    88. OH MY GOD IT WORKS!!! I have a smooth scaled external monitor image which looks almost as good as the Retina!!!!!
    89. Realize I now have to pay for SwitchResX after 10 days
    90. Refuse to pay $14
    91. Scratch head, surely SwitchResX isn’t doing anything that advanced, probably just editing the Overrides files like the RGB fix
    92. Take a look at the overrides file, sure enough, SwitchResX just adds the custom resolutions in here
    93. Back to Google.
    94. Find great free tool and guide for encoding the custom resolution data: https://comsysto.github.io/Display-...or-with-HiDPI-Support-For-Scaled-Resolutions/
    95. Realize the custom scaled resolutions are still not available in System Preferences, hidden somehow. Another undocumented OSX ‘feature’.
    96. Back to Google.
    97. Find the awesome free tool RDM to enable the hidden resolutions. https://github.com/avibrazil/RDM
    98. Install RDM
    99. Finally!!! It all works, for FREEEEE!
    100. Shutdown
    101. Boot into recovery mode
    102. Re-enable SIP
    103. Reboot.
    104. Done!

    Gotta love OSX.
     
  2. Stephen.R macrumors 65816

    Stephen.R

    Joined:
    Nov 2, 2018
    Location:
    Thailand
    #2
    Huh? It took me aboooouuut 10 seconds to do it on two displays.

    1. Open Displays prefpane.
    2. Click "Scaled"
    3. Click the second from right option
    4. Repeat steps 2 & 3 for second monitor.
    5. Done! Screen Shot 2019-05-02 at 16.50.46.png
     
  3. seb101 thread starter macrumors member

    Joined:
    Apr 3, 2014
    #3
    Thats because the P2415Q is a 'UHD' resolution screen at 3840x2160 - on which OSX supports native scaling. On other '4k' resolutions, like 2560x1440 you do not get those options in the Display Settings dialog. It looks like this:

    Screen Shot 2019-05-02 at 11.26.58.png

    You will likely still benefit from forcing the RGB mode in the first half of the steps however.
     
  4. leman macrumors G3

    Joined:
    Oct 14, 2008
    #4
    That is not a 4K resolution. Your problem is that you have a low-DPI display next to your high-DPI Mac and you expect the picture quality to be compatible.
     
  5. Stephen.R macrumors 65816

    Stephen.R

    Joined:
    Nov 2, 2018
    Location:
    Thailand
    #5
    .... 2560x1440 is not 4K. Its 2K. I guess 2.5K but nobody calls it that.
     
  6. seb101, May 2, 2019
    Last edited: May 2, 2019

    seb101 thread starter macrumors member

    Joined:
    Apr 3, 2014
    #6
    No, I don't, I never expected the picture quality to be comparable. I expect be be able to scale the OS display so that the visual size of UI elements is consistent across displays. Which, with a bit of hacking, you can. It's just a shame it isn't an option in the System Preferences like it is in Windows.
    .
     
  7. leman macrumors G3

    Joined:
    Oct 14, 2008
    #7
    Apple has experimented with flexible UI scaling for years (a hidden implementation was present in snow leopard and I believe Lion), but they finally decided that it's not the right way to go (mainly since it just doesn't work consistently, especially on a low-dpi display). If this particular feature is important to you, I recommend you agains using macOS, since it's unlikely that it will supported. Maybe in the future, when display resolution is retired as a concept (this should happen within 15 years or so).
     
  8. seb101 thread starter macrumors member

    Joined:
    Apr 3, 2014
    #8
    1) Apple HAVE implemented flexible UI scaling, take a look at Stephen.R's screenshot above, he has 5 flexible options for how to scale the UI on his 4K screen. They have just chosen to be selective with it's implementation (no doubt to drive people towards their 'recommended' partner products).

    2) Flexible scaling works just great on resolutions lower than true 4K. 2560x1440 on a 24" or 27" screen when scaled to around '125%' looks just fine. The UI elements match in visual size to the retina display. No the 'quality' isn't quite as high, but you save yourself $300+. It's just a shame its a pain in the ass to turn on.

    3) It is already supported, it's just hidden.
     
  9. leman macrumors G3

    Joined:
    Oct 14, 2008
    #9
    AFAIK, Apple has removed its flexible UI scaling implementation completely. They only support 2x2 scaling (2.0 backing store factor) — i.e. 1 logical pixel is represented as 2x2 physical pixels. This, in combination with regular resolution switching, is what you can see in Stephen.R's screenshot.

    It might look ok to you, but it really messes up the quality of fonts and other content. Apple believes that predictable image quality is more important than visual hacks of the kind you describe. If that is what you want, you can always choose an OS that gives it to you.

    P.S. "True" flexible UI scaling is great thing, but it puts very high burden on the software developer and introduces massive quality issues on lower DPI screens. This is the path that Windows chose and unfortunately, it looks like a mess with many apps. This is especially unfortunate when paired with Windows font rendering, which is already distorting fonts. Apple instead chose to fix their scaling to a factor of 2, which is inflexible, but makes HiDPI software trivial to write and also enables faster drawing algorithms (since you don't need to take fractional lien widths into account).
     
  10. Stephen.R macrumors 65816

    Stephen.R

    Joined:
    Nov 2, 2018
    Location:
    Thailand
    #10
    Yes and no.

    I remember the implementation you're referring to back in Lion/et.al, it was more akin to the way (as I understand it) Windows does it: each application renders it's window chrome/controls/content in a higher resolution. From memory when you enabled it the menu bar sizing would change as you went in and out of apps that supported it.

    What exists now is definitely harder on the GPU but Im not sure your description of it is quite accurate - the scaling of the rendered image to match the display isn't the same as setting your 1080p display to run at 1024x768, where the display scales up the image - the display receives a 1:1 4k (or whatever it's native res is) image, that's pre-scaled by macOS/the GPU.
     
  11. mick2 macrumors member

    Joined:
    Oct 5, 2017
    Location:
    UK
    #11

    Or in other words, OP you may think you want to achieve crisp and correctly scaled fonts on your 2560x1440 monitor, but fortunately Apple have already thought about this on your behalf and have concluded that what you want is actually incorrect, you just probably don't realise it...you know, its all for reasons of 'predictable image quality' when using monitors that you dont own. Like the expensive ones sold by Apple.

    Surely the fact that the OP actually solved his problem - albeit by jumping through the ridiculous hoops he outlined - is proof that it *is* actually possible to achieve 'predictable image quality' using other hardware, but its just that Apple dont want to allow their users to do this easily?
     
  12. Stephen.R macrumors 65816

    Stephen.R

    Joined:
    Nov 2, 2018
    Location:
    Thailand
    #12
    Apple don’t make monitors, and their technical solution for “high dpi” works on a dell 4K monitor when their own monitors from the same time (2015) were 2k.
    --- Post Merged, May 2, 2019 ---
    I’ve seen a car literally made from the bits of three other cars (not a door here or there - front of one, back of another, welded together).

    By your logic that car is proof that it is possible to achieve predictable driving quality by welding three cars into one. Hint: it isn’t.
     
  13. seb101 thread starter macrumors member

    Joined:
    Apr 3, 2014
    #13
    Here is the MBP side by side with a 2560 x1440 monitor running at approx 120% scaling (2250x1260 effective resolution).

    762FF06A-0F9B-4A12-B7C1-B8B4037FC476.jpeg
    Here are some close ups of the text. Not perfect, but certainly not bad for $350.

    9C99F5E4-3AE0-4E38-9835-5292C3D6EC43.jpeg
    FB895F7C-FD9C-4645-ADDD-396C85DF1F74.jpeg
     
  14. leman, May 3, 2019
    Last edited: May 3, 2019

    leman macrumors G3

    Joined:
    Oct 14, 2008
    #14
    Look, there is no need to get snarky here. The point is that its not really possible to get crisp and correctly scaled fonts in this way on macOS (you can use the built-in zoom functionality for a much better quality, but it's not what OP wants). The scaling that macOS implements is targeted at high-DPI screens and will produce subpar results on low-DPI displays, which is why its disabled.

    It is also possible to use your laptop as a room heater or your car as an emergency electricity generator but it doesn't mean that its a recommended or supported use case. What OP did here is force a rendering mode that is reserved for HiDPI screens. Frankly, OP could have probably obtained a similar result by just switching to a lower resolution, without all these hacks.

    Nevertheless, there is indeed an issue where macOS negotiates an incorrect signal protocol with some Dell displays. From what I've read, its a kind of two-sided issue: the monitor advertises a certain spec but doesn't seem to properly work with that spec. At the same time, macOS insists on using this spec and doesn't offer an easy way to override this for the user.
    --- Post Merged, May 3, 2019 ---
    If you want it more detailed, this is what happens behind the scenes. First, modern OSs generally don't let applications draw to the screen directly, instead, they provide a backing store (an in-memory drawing surface). The differences lie in the resolution of the backing store and how logical pixels (what is considered a pixel by software) and what is considered a pixel by hardware are mapped onto each other.

    Windows basically uses the following approach: their backing store has the same PPI as the system display resolution, but the logical pixel size is flexible. If you set DPI scaling to 150%, for example, then the system tells all the apps to draw everything at 1.5 times the size. This makes drawing logic much more complicated, since the app now needs to take into account that a pixel is not necessarily a pixel. It also introduces problems with graphical assets, since they need to be scaled as well. Anyway, if programmed properly, using correct drawing abstractions, it's not an issue (aside performance, since drawing algorithms must be rather general), but unfortunately, most custom drawing code is not really programmed properly. This is also the approach that Appel had in Snow Leopard: the application had to query the current backing store factor and draw at the corresponding scale.

    Modern macOS does something much more simpler. It basically only allows two backing store factors: 1.0 and 2.0. If it's 1.0, a pixel is a pixel and the app just draws as it traditionally would. If it's 2.0 (what apple calls HiDPI mode), then a pixel is backed by a 2x2 group of pixels in the backing store and the app needs to draw stuff at 2x its original size (in every dimension) to achieve same UI sizes. This essentially enables drawing with "real" sub-pixel precision (and also a reason why fancy font smoothing techniques become obsolete with this mode — since all these techniques are there to emulate sub-pixel rendering). Anyway, since the backing factor is integral (and fixed) in this approach, it makes many things easier (e.g. drawing algorithms can be simpler in many cases, asset management becomes simpler) — and this is the reason why Mac software could transition to HiDPI within very brief period, while Windows is still kind of struggling.

    And the things got really interesting when some mad genius at Apple had the following realisation: the PPI of the backing store can be different from the PPI of the actual physical display. For instance, your retina display can be 2880x1800, but you full screen backing store could be 3840x2400 (1920x1200 logical resolution with 2.0 backing store factor). From the perspective of your app it is drawing to a 4K 3840x2400 display at a 200% DPI scaling, but macOS will then filter the final image to the 2880x1800. This gives you emulated 75% DP scaling using supersampling AA. Since the PPI of the retina screen is still very high, there is some accuracy loss, but not really noticeable. And the quality is higher than directly drawing at 75% to 2880x1800, since you are relying on SSAA behind the scenes. In principle, this method can implement arbitrary DPI scaling with high quality (by varying the resolution of the backing store), but Apple limits it to some commonly used values. The problems with this approach is a) scaling overhead (negligible with modern GPUs), b) it makes pixel-perfect rendering impossible (IMO not an issue if you screen is HiDPI, since pixels are not discernible anyway) and c) it lives and dies with the resolution of the native display. If the screen is low-DPI, there is just too much accuracy loss after downsampling. This is the main reason why Apple disables this rendering mode on low-DPI screens and also there reason why Windows historically relied on pixel-perfect (or pixel-snapping) drawing that give this crisp appearance by effectively distorting the image so that it can fit into the pixel grid.

    (Sorry for the very long post, I hope that someone finds it interesting) :D
     
  15. Stephen.R macrumors 65816

    Stephen.R

    Joined:
    Nov 2, 2018
    Location:
    Thailand
    #15
    I only commented because the short text I quoted gave (me) the impression you were suggesting something much simpler - "everything is rendered at 2x, and then the display sorts it out" but nice writeup, very detailed!
     
  16. mick2 macrumors member

    Joined:
    Oct 5, 2017
    Location:
    UK
    #16
    Why the absurd analogies here? The OP is simply trying to do is get his machine to scale nicely with his monitor. Do these analogies really reflect this? Or are they actually just a crude way of making a reasonable thing - wanting to make your Macbook scale with your monitor - seem like a ridiculous, overblown desire?

    This is where the actual snarkiness is; a defend-apple-at-all-costs response to any post in which someone appears to be criticising MacOs or apple; in this case your response to the OP post is that this is somehow a binary issue which is about 'predictable image quality' vs 'hackery' (and of course who in their right mind would choose the latter option?). Leman, you reformulate the OPs issue in order to deflect any implied criticism of apple and to jump through logcial hoops at times to defend the status quo, and you do this consistently all over the forum and in response to almost any technical or QA post in which apple or their prodcuts are conceivably criticised.

    I just get tired of reading these tortuous logical and semantic carte-blanche justifications of apple and their practices and feel the need to call them out. The reality, of course, is that apple do some stuff well, some stuff mediocre, and some stuff poorly, just like any other tech company, AND IT'S OK TO SAY SO...:) And in the case of their HiDPI scaling on 2.5k monitors, they do stuff poorly...
     
  17. leman macrumors G3

    Joined:
    Oct 14, 2008
    #17
    You are making this unnecessarily complicated and polemic. The fact is: Apple does not support flexible DPI scaling in the same fashion like Windows does (some reasons for this I have outlined in my previous posts). Another fact is: OP can achieve what he wants by simply changing the resolution of the display (supported and preferred way of doing this on low-DPI monitors). Another fact is: Apple does have a flexible scaling implementation, but it is tailored for HiDPI displays and does not make much sense with low DPI monitors, where switching solutions is preferred, so that's why it's not exposed to the user. OP wanted to make this unnecessarily complicated and is ranting mostly about his own lack of technical understanding (already calling an old 1440p monitor a 4K is a thing), and you are being overly vocal in defending his right to do unnecessary things.
     
  18. Stephen.R macrumors 65816

    Stephen.R

    Joined:
    Nov 2, 2018
    Location:
    Thailand
    #18
    Because the OP's premise is absurd.

    He has a low PPI display - how low is not even clear, because he first claimed it's 4K, at 2650x1440 (I assume he meant 2560x1440), but then posted a screenshot referencing a monitor model (and shown on the screen) with a maximum resolution of 1920x1200.

    The steps this person went through rather than simply changing the resolution or accepting his desired visual appearance is not supported, are absurd. If you see something that says you need to disable SIP, to change a monitor setting, and you decide to follow through, all bets are off. You're in "this is probably not a good idea" territory.
     
  19. Stephen.R macrumors 65816

    Stephen.R

    Joined:
    Nov 2, 2018
    Location:
    Thailand
    #19
    Nobody is 'justifying' Apple's practices. Would you buy a piece of pork belly from your butcher, try to make ham and then go back and complain it's too fatty? Or would you accept when he tells you that you need a leg to make ham from?

    Also, that isn't a High DPI display by anyone's definition, so why would anyone expect "HiDPI" mode to work? I don't expect my car to work in the ocean.


    How's that for "absurd" analogies?
     
  20. Populus macrumors 6502a

    Populus

    Joined:
    Aug 24, 2012
    Location:
    Valencia, Spain.
    #20
    Hey OP, I have a Dell monitor, 24" 2408WPS, it is a 1920x1200 monitor, and it happens the same, I noticed it forces theYPbPr/YCbCr mode instead of the RGB one. Also the text is blurry, now even more thanks to Mojave.

    So I was thinking if your method would make my monitor crispier. First, I will try to force the RGB mode, although I'd like to know if it's possible to reverse this hack back to the default.

    Secondly, I know this will be difficult, but... would it be possible to force a better rendering for my 1200p monitor? I don't see clearly what you did, but I miss that option too, being able to render the screen with bigger elements, but at the same time, rendered at 1200p, the native resolution. Would it be possible? In that case... how did you do the maths? What resolution should I try to force?

    The System Integrity Protection is easy to deactivate. I did it once to modify something else. But I don't know how to calculate the resolutions.

    Thank you in advance!
     
  21. mikerisner macrumors newbie

    mikerisner

    Joined:
    Sep 22, 2015
    Location:
    Atlanta, GA
    #21
    [​IMG]

    I have connected my MacBook Pro to one 4K/UHD monitor and Display settings look like the left (these screen grabs are not actually from my Mac but they make the point). I connected the same Mac with the same HDMI cable to another 4K/UHD monitor and had the Display settings look like the right. So I wonder if there's some hardware spec that allows macOS to offer the more elegant settings on the left.

    If someone knows the answer, please share. I really want to be able to shop for a 4K monitor that supports the configuration settings as seen on the left.

    Thanks!!
     

Share This Page

20 May 2, 2019