Based on the above wine findings, I have tried to do the same on windows and it sort-of works, but it's not as good.
I have injected DLL into winbox process that replaces GetSysColor API and instead of returning default windows colors, it returns colors from wine dark theme.
This seems to be OK for most elements, but some are still drawn in gray, meaning it's either system control or Winbox gets the color from somewhere else.
For Mikrotik developers: Doing the same in your own code is as simple as making GetSysColor function in your code, so it doesn't get imported from windows DLL and then supplying color values from INI file or some other source. This way you will not have to make any changes to your existing code, this is basically equal to my DLL injection method. (And to call original function, just use LoadLibrary + GetProcAddress).
Based on my screenshot, this seems to do the job for about 80% of GUI elements, rest may be using hardcoded colors or they use windows GUI controls that have fixed colors (these will be probably hardest to change on per-process basis - I think this applies to menus and toolbars, they can be owner-drawn but that requires some extra code to do so).
You do not have the required permissions to view the files attached to this post.