diff --git a/src/gui/image/qimage_conversions.cpp b/src/gui/image/qimage_conversions.cpp index 629a7c9b69d49af3a62f9255f5373a5d1a0f2ccb..f2f71b4bad5ef45f11d4bc3748c2b31586ebd243 100644 --- a/src/gui/image/qimage_conversions.cpp +++ b/src/gui/image/qimage_conversions.cpp @@ -163,7 +163,9 @@ bool convert_generic_inplace(QImageData *data, QImage::Format dst_format, Qt::Im const uint *ptr = fetch(buffer, srcData, x, l); ptr = srcLayout->convertToARGB32PM(buffer, ptr, l, srcLayout, 0); ptr = destLayout->convertFromARGB32PM(buffer, ptr, l, destLayout, 0); - store(srcData, ptr, x, l); + // The conversions might be passthrough and not use the buffer, in that case we are already done. + if (srcData != (const uchar*)ptr) + store(srcData, ptr, x, l); x += l; } srcData += data->bytes_per_line;