Note that this keeps using readback right now, `NativeSurface` painting
will be implemented soon.

Also see #6142