diff --git a/src/plugins/imageformats/webp/qwebphandler.cpp b/src/plugins/imageformats/webp/qwebphandler.cpp
index 12c4001f59afd971b35d63429756877cbb52ae36..578a70108ef5d8bdf6ea919aaea49485c62e1d34 100644
--- a/src/plugins/imageformats/webp/qwebphandler.cpp
+++ b/src/plugins/imageformats/webp/qwebphandler.cpp
@@ -248,8 +248,15 @@ bool QWebpHandler::write(const QImage &image)
         return false;
     }
 
-    config.quality = m_quality < 0 ? 75 : qMin(m_quality, 100);
-    config.lossless = (config.quality >= 100);
+    int reqQuality = m_quality < 0 ? 75 : qMin(m_quality, 100);
+    if (reqQuality < 100) {
+        config.lossless = 0;
+        config.quality = reqQuality;
+    } else {
+        config.lossless = 1;
+        config.quality = 70;  // For lossless, specifies compression effort; 70 is libwebp default
+    }
+    config.alpha_quality = config.quality;
     picture.writer = pictureWriter;
     picture.custom_ptr = device();