QBlitFramebuffer's sourceRect and destinationRect were defined as QRectF in the API.
Under the hood, GraphicsContext blindly passes left(), top(), left()+width() and top()+height() to glBlitFramebuffer. This is pretty bad since glBlitFramebuffer uses the GL coordinate system (Y == bottom left corner). QRect(F) is badly suited for representing such rectangles. So once a non-fullscreen blit is needed, applications will likely attempt to convert their QRectF to a GL-friendly rect using setY, but that will internally alter the QRectF's height.
Rather, QBlitFramebuffer should state that the rectangles are in Qt coordinates (Y == top left). This would not just allow sane rectangle manipulation on the client side, but would also be more future-proof (given that no other graphics APIs use the Y==bottom left convention)
Code like the following:
could then be simplified to a more sane: