rMBP - El Capitan - External monitor blurry I hope someone can help as this is driving me crazy...

At the weekend I got a new Macbook Pro Retina (Early 2015 model). Before connecting it to an external monitor, I upgraded to El Capitan and the device on its own is functioning perfectly.

When I connect it to my external monitor, a Dell U2412M, certain parts of the display are blurry. Some research indicated that it may be using the wrong colour space and using the well known script I generated and installed a new profile to force RGB. There may have been a slight improvement, hard to tell...

I then read about setting 'AppleFontSmoothing' and tried all available settings, again, there may have been a slight improvement. I'd pretty much decided to live with it. Until I previewed a jpg in finder and it looked like image (1) below.

I then dragged the finder window back to the built in retina display, and it looked like image (2) below.

Much smoother, but a higher resolution - no great surprise. Now, without changing anything at all, I dragged the finder window back to the Dell monitor and I was shocked to see that the smooth image was retained. 



For information, the effect is not visibly different using either a mini-displayport to DVI-D or mdp to display-port cable.

Just to be clear, images 1 and 3 above are screenshot of the same window, on the same monitor connected the same way to the same machine. The only difference is that between these screenshots the window had a short visit to the built in screen.
There's a Ruby script here: 

https://gist.github.com/bastibense/6549835

#!/usr/bin/ruby
# Create display override file to force Mac OS X to use RGB mode for Display
# see http://embdev.net/topic/284710
# 
# Update 2013-06-24: added -w0 option to prevent truncated lines

require 'base64'

data=`ioreg -l -w0 -d0 -r -c AppleDisplay`

edid_hex=data.match(/IODisplayEDID.*?&lt;([a-z0-9]+)&gt;/i)[1]
vendorid=data.match(/DisplayVendorID.*?([0-9]+)/i)[1].to_i
productid=data.match(/DisplayProductID.*?([0-9]+)/i)[1].to_i

puts "found display: vendorid #{vendorid}, productid #{productid}, EDID:\n#{edid_hex}"

bytes=edid_hex.scan(/../).map{|x|Integer("0x#{x}")}.flatten

puts "Setting color support to RGB 4:4:4 only"
bytes[24] &amp;= ~(0b11000)

puts "Number of extension blocks: #{bytes[126]}"
puts "removing extension block"
bytes = bytes[0..127]
bytes[126] = 0

bytes[127] = (0x100-(bytes[0..126].reduce(:+) % 256)) % 256
puts 
puts "Recalculated checksum: 0x%x" % bytes[127]
puts "new EDID:\n#{bytes.map{|b|"%02X"%b}.join}"

Dir.mkdir("DisplayVendorID-%x" % vendorid) rescue nil
f = File.open("DisplayVendorID-%x/DisplayProductID-%x" % [vendorid, productid], 'w')
f.write '&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;'
f.write "
&lt;dict&gt;
  &lt;key&gt;DisplayProductName&lt;/key&gt;
  &lt;string&gt;Display with forced RGB mode (EDID override)&lt;/string&gt;
  &lt;key&gt;IODisplayEDID&lt;/key&gt;
  &lt;data&gt;#{Base64.encode64(bytes.pack('C*'))}&lt;/data&gt;
  &lt;key&gt;DisplayVendorID&lt;/key&gt;
  &lt;integer&gt;#{vendorid}&lt;/integer&gt;
  &lt;key&gt;DisplayProductID&lt;/key&gt;
  &lt;integer&gt;#{productid}&lt;/integer&gt;
&lt;/dict&gt;
&lt;/plist&gt;"
f.close


You'll have to run it in El Capitan's rootless mode for it to work.