diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp
index 102066704baa74dd2609d976142aabf784885723..f39a15070c1fb341e6ef839d47b1ad889c76311f 100644
--- a/src/quick/items/qquickshadereffect.cpp
+++ b/src/quick/items/qquickshadereffect.cpp
@@ -912,8 +912,8 @@ QSGNode *QQuickShaderEffect::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDa
 {
     QQuickShaderEffectNode *node = static_cast<QQuickShaderEffectNode *>(oldNode);
 
-    // In the case of a bad vertex shader, don't try to create a node...
-    if (m_common.attributes.isEmpty()) {
+    // In the case of zero-size or a bad vertex shader, don't try to create a node...
+    if (m_common.attributes.isEmpty() || width() <= 0 || height() <= 0) {
         if (node)
             delete node;
         return 0;
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp
index bd0bb2348e08ba8883d1b765e56904e61fcbb2c2..9debfe35b394624c4b111cff322b5ceb8c0c9ee3 100644
--- a/src/quick/items/qquickshadereffectsource.cpp
+++ b/src/quick/items/qquickshadereffectsource.cpp
@@ -942,7 +942,7 @@ void QQuickShaderEffectSource::releaseResources()
 
 QSGNode *QQuickShaderEffectSource::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
 {
-    if (!m_sourceItem || m_sourceItem->width() == 0 || m_sourceItem->height() == 0) {
+    if (!m_sourceItem || m_sourceItem->width() <= 0 || m_sourceItem->height() <= 0) {
         if (m_texture)
             m_texture->setItem(0);
         delete oldNode;