Rendering engine: make some calculations floating-point to avoid checkerboard show-through

This fixes a rare edge case where GDI's PatBlt and GDI+ calculate render
bounds differently, potentially leaving a thin strip of checkerboarding
around non-transparent images (despite GDI+ tile wrap mode being used).