From 4d009678ce1f8ca63d62fdbb09c80ec2f80811b9 Mon Sep 17 00:00:00 2001 From: Eirik Aavitsland Date: Mon, 9 Dec 2024 18:04:19 +0100 Subject: [PATCH] Fix in-place conversion of certain QImage formats In the copying/transcription of the generic converter to the generic in-place converter, a test for Format_RGB32 destination format was mistakenly replaced with test of source format. The result was that a suboptimal pixel store function was selected, and the resulting image data could end up with non-0xff in the unused alpha field. Task-number: QTBUG-132051 Pick-to: 6.8 Change-Id: If3ebf5fdd7ab6e377c8ad479ea38ce665f922b7c Reviewed-by: Allan Sandfeld Jensen (cherry picked from commit 0ace5ba0357b1614b47cb38a16f4afb2fe8e62db) Reviewed-by: Qt Cherry-pick Bot --- src/gui/image/qimage_conversions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/image/qimage_conversions.cpp b/src/gui/image/qimage_conversions.cpp index c1a700fddfb..be1bad22b1b 100644 --- a/src/gui/image/qimage_conversions.cpp +++ b/src/gui/image/qimage_conversions.cpp @@ -396,7 +396,7 @@ bool convert_generic_inplace(QImageData *data, QImage::Format dst_format, Qt::Im !destLayout->hasAlphaChannel && destLayout->storeFromRGB32) { // Avoid unnecessary premultiply and unpremultiply when converting from unpremultiplied src format. fetch = qPixelLayouts[qt_toPremultipliedFormat(data->format)].fetchToARGB32PM; - if (data->format == QImage::Format_RGB32) + if (dst_format == QImage::Format_RGB32) store = storeRGB32FromARGB32; else store = destLayout->storeFromRGB32;