When adding a VisualImageObject to another VisualObject that has a Composite set in its Brush for transparency, the VisualImageObject is rendered with the same Composite, even if this is not desired. Calling setFillBrush on the VisualImageObject does not change this, since VisualImageObject does not apply Brushes in its renderObject() implementation.
A quick and dirty fix to make all Images opaque is to add the line
new Brush(null, null, null).useOn(g);
in VisualImageObject's renderObject() implementation.