diff options
Diffstat (limited to 'src/plugins/platforms/xcb/nativepainting')
-rw-r--r-- | src/plugins/platforms/xcb/nativepainting/qpixmap_x11.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/plugins/platforms/xcb/nativepainting/qpixmap_x11.cpp b/src/plugins/platforms/xcb/nativepainting/qpixmap_x11.cpp index e59ad57c27..f791c90346 100644 --- a/src/plugins/platforms/xcb/nativepainting/qpixmap_x11.cpp +++ b/src/plugins/platforms/xcb/nativepainting/qpixmap_x11.cpp @@ -529,8 +529,11 @@ void QX11PlatformPixmap::fromImage(const QImage &img, Qt::ImageConversionFlags f } } - if (d == 1 || d == 16 || d == 24 || image.format() == QImage::Format_Grayscale8) { - image = image.convertToFormat(QImage::Format_RGB32, flags); + if (d == 1 || image.format() > QImage::Format_ARGB32_Premultiplied) { + QImage::Format fmt = QImage::Format_RGB32; + if (alphaCheck.hasXRenderAndAlpha() && d > 1) + fmt = QImage::Format_ARGB32_Premultiplied; + image = image.convertToFormat(fmt, flags); fromImage(image, Qt::AutoColor); return; } |