I’ve just been digging into why a scrollbar was not honouring the thickness specified in the window look and feel.
The problem is simply that the application is creating a Viewport and then later adding it to a parent window. The parent window has a specific L&F applied. Internally, Viewport caches the scroll bar thickness from the default L&F when it is created. Reparenting it does not fire lookAndFeelChanged(), so the old - and now incorrect - thickness persists.
Obviously one can manually call the Viewport lookAndFeelChanged(), but one has to know that in advance. I can see that generally monitoring all reparenting for L&F changes might be a bit overkill, but when a component is caching L&F values might it not also consider looking out for parenting changes and updating the cached values on those just in case?