diff --git a/dist/changes-5.9.1 b/dist/changes-5.9.1
new file mode 100644
index 0000000000000000000000000000000000000000..e0a6a4b9c5c6cfd545c97f98c04d929cb62b044f
--- /dev/null
+++ b/dist/changes-5.9.1
@@ -0,0 +1,24 @@
+Qt 5.9.1 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.9.0.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+http://doc.qt.io/qt-5/index.html
+
+The Qt version 5.9 series is binary compatible with the 5.8.x series.
+Applications compiled for 5.8 will continue to run with 5.9.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+*                          Library                                         *
+****************************************************************************
+
+ - This release contains only minor code improvements.
diff --git a/src/imageformats/doc/src/qtimageformats.qdoc b/src/imageformats/doc/src/qtimageformats.qdoc
index 88521178696122d881c5e86454b4531ea34c6d58..2fea934a8df8e1378c5379dc41e58be30fd948c8 100644
--- a/src/imageformats/doc/src/qtimageformats.qdoc
+++ b/src/imageformats/doc/src/qtimageformats.qdoc
@@ -65,6 +65,10 @@ libraries. If not found, it may fall back on using a bundled copy (in
 provided for manual builds only, and not used as a fallback in case system
 libraries are unavailable.
 
+\note For security reasons, the Direct Draw Surface (DDS) handler is not built
+by default since Qt 5.8. Users who still want this handler can build it from the
+source project.
+
 \section2 Deployment
 
 When built, the Qt Image Formats plugins are located as dynamic
diff --git a/src/plugins/imageformats/webp/qwebphandler.cpp b/src/plugins/imageformats/webp/qwebphandler.cpp
index 0bd89f6fad7f07e5f245bc637fd1699c9fbd584c..ce90158a173f741609985ad3128bab3b606091e4 100644
--- a/src/plugins/imageformats/webp/qwebphandler.cpp
+++ b/src/plugins/imageformats/webp/qwebphandler.cpp
@@ -74,6 +74,10 @@ bool QWebpHandler::canRead() const
 
     if (m_scanState != ScanError) {
         setFormat(QByteArrayLiteral("webp"));
+
+        if (m_features.has_animation && m_iter.frame_num >= m_frameCount)
+            return false;
+
         return true;
     }
     return false;
@@ -118,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;
@@ -189,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;
diff --git a/tests/auto/webp/tst_qwebp.cpp b/tests/auto/webp/tst_qwebp.cpp
index d1d30dbefe1b7cbc99933f5c947d7910bb9faf48..ad4a376b53da73f7588710c6d13d357b7270cdee 100644
--- a/tests/auto/webp/tst_qwebp.cpp
+++ b/tests/auto/webp/tst_qwebp.cpp
@@ -127,6 +127,7 @@ void tst_qwebp::readAnimation()
     }
 
     QVERIFY(reader.read().isNull());
+    QCOMPARE(reader.canRead(), !reader.supportsAnimation());
 }
 
 void tst_qwebp::writeImage_data()