diff -r ef0373b55136 -r 758a864f9613 src/opengl/qpixmapdata_gl.cpp --- a/src/opengl/qpixmapdata_gl.cpp Fri Sep 17 08:34:18 2010 +0300 +++ b/src/opengl/qpixmapdata_gl.cpp Mon Oct 04 01:19:32 2010 +0300 @@ -367,7 +367,7 @@ } void QGLPixmapData::fromImage(const QImage &image, - Qt::ImageConversionFlags /*flags*/) + Qt::ImageConversionFlags flags) { if (image.size() == QSize(w, h)) setSerialNumber(++qt_gl_pixmap_serial); @@ -381,7 +381,9 @@ if (qApp->desktop()->depth() == 16) format = QImage::Format_RGB16; - if (image.hasAlphaChannel() && const_cast(image).data_ptr()->checkForAlphaPixels()) + if (image.hasAlphaChannel() + && ((flags & Qt::NoOpaqueDetection) + || const_cast(image).data_ptr()->checkForAlphaPixels())) format = QImage::Format_ARGB32_Premultiplied;; m_source = image.convertToFormat(format);