Oh that's awesome. See, I knew you would see what I was missing. This fixes (mostly) everything. Except that it breaks for art. But that's the same case as image...objects with their own painters don't need that code. But I think it makes sense to expose the method since it provides a consistent interface and other backends might work differently.