It is possible that during
painter.drawImage(paintRect, mImage, mImage.rect());
the painter just interpolate which pixel to take in the initial image when the size differs. Which will explain the second image.
Scale manual using
QImage todraw = mImage.scaled(
paintRect.size(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation);
...
painter.drawImage(paintRect, todraw, mImage.rect());
You compute the image todraw
only on resize events (to avoid scaling every paint event)
and you use it instead with the painter.