Yeah, I spent nights on these issues. Thing are more complicated when you also use panels, radiogrups etc and targets are Windows and Linux. Finally my mind exploded and I moved to the fpGUI. Now I'm using LCL only for ERP (which is Lazarus target I supose) systems where theming and bacground colors are not important. If the customer only mentions about something "fancy" then I just left LCL and start project based on fpGUI or BGRAControls.
Here is question "Quo vadis LCL?". I think that GTK/QT/Win32 widgetset system finally will collapse. You hit GTK with hammer and something drop out from Win32 side. Lazarus team should start development of custom drawn controls or join to some existing projects like fpGUI/Custom Drawn (like QT did). This will not solve all problems but most of them. Certainly it reduce issues to the one API, not 5. I know that there is a lot of work, but if you look on Lazarus standard palette, most of controls are already custom drawn, labels, drawgrid, speed button, treeview, these are custom drawn controls. Buttons can be replaced by speed button, listview (which never worked same on Win32/Linux) can be easily replaced by drawgrid. Only TEdits, popupmenus and scrollbars are native. Custom Drawn Controls brings a lot of advantages, unique look, style manager ease of adding new functionality.