I've been using a workaround for years, and it is version-agnostic. The script is posted here, though you'll need to modify it for your own needs. I don't know if a similar technique is feasible in Windows.
Simply put, I invert the entire display when I'm on a workspace with Matlab windows. This is handled automatically by the script that's invoked when switching workspaces via keyboard. Since I normally run a dark GTK theme, the titlebar and panel are still bright, but that's a small part of the screen, and I've taken to wearing a cap to keep room lights out of my field of vision, so the panel is usually out of view unless I look at it.
Of course, there are limitations to this approach. You still don't really get to customize the colors at all. You just get to darken the bulk of the UI area. You also have to deal with everything being inverted. For example, this surf plot looks right because it's easy to invert the colormap accordingly, but you can't apply inverted lighting. Using datatips on an inverted image can also lead to routine confusion if you forget that the image is actually inverted. If I need to return the display to normal, I just have a keyboard shortcut bound to xcalib -invert -alter , so I can swap back and forth when needed.
This ridiculous workaround is the reason that all the GUI tools in MIMT have options for use on an inverted display. I don't have to deal with manually inverting every image for display, imshow2(), etc does that all with the 'invert' option or a checkbox in the GUI.