Sounds like the Component’s just not being redrawn when you call setVisible() which is why minimising/maximising the window gives the expected behaviour - because it’s forcing a repaint.
I debugged though the code, it just heads up the component tree calling internalRepaintUnchecked()/internalRepaint(). I’m wondering if it is something to do with the cachedImage.
If you call setVisible (true); on a component, it will be repainted, if you call setVisible (false); on a component, its parent will be repainted. I don’t know how that affects cached images.
How does cachedImage come into play? Are you setting setBufferedToImage on a Drawable?
If you do, I think that’s a bad idea. Drawing the Drawable is probably faster than the cached Image, and you get aliasing, which was the reason to switch to vector graphics in the first place.