diff --git a/src/plugins/imageformats/webp/qwebphandler.cpp b/src/plugins/imageformats/webp/qwebphandler.cpp index 5a0ae4ad45ac5d7f2f0ffcfaca4da24f473cba01..ce90158a173f741609985ad3128bab3b606091e4 100644 --- a/src/plugins/imageformats/webp/qwebphandler.cpp +++ b/src/plugins/imageformats/webp/qwebphandler.cpp @@ -122,6 +122,8 @@ bool QWebpHandler::ensureScanned() const that->m_bgColor = QColor::fromRgba(QRgb(WebPDemuxGetI(m_demuxer, WEBP_FF_BACKGROUND_COLOR))); that->m_composited = new QImage(that->m_features.width, that->m_features.height, QImage::Format_ARGB32); + if (that->m_features.has_alpha) + that->m_composited->fill(Qt::transparent); // We do not reset device position since we have read in all data m_scanState = ScanSuccess; @@ -193,6 +195,8 @@ bool QWebpHandler::read(QImage *image) } else { // Animation QPainter painter(m_composited); + if (m_features.has_alpha && m_iter.dispose_method == WEBP_MUX_DISPOSE_BACKGROUND) + m_composited->fill(Qt::transparent); painter.drawImage(currentImageRect(), frame); *image = *m_composited;