diff --git a/src/imports/qtcanvas3d/teximage3d.cpp b/src/imports/qtcanvas3d/teximage3d.cpp
index 652e8c2b7360d464d8e04a35195feb9570cb775e..8528d159f70829ac8f84c7e9965d715018149e0d 100644
--- a/src/imports/qtcanvas3d/teximage3d.cpp
+++ b/src/imports/qtcanvas3d/teximage3d.cpp
@@ -198,7 +198,7 @@ void CanvasTextureImage::cleanupNetworkReply()
 
 CanvasTextureImage::~CanvasTextureImage()
 {
-    if (m_parentFactory)
+    if (!m_parentFactory.isNull())
         m_parentFactory->handleImageDestroyed(this);
     cleanupNetworkReply();
     delete[] m_pixelCache;
@@ -257,7 +257,8 @@ void CanvasTextureImage::load()
         return;
 
     setImageState(LOADING);
-    m_parentFactory->handleImageLoadingStarted(this);
+    if (!m_parentFactory.isNull())
+        m_parentFactory->handleImageLoadingStarted(this);
     emit imageLoadingStarted(this);
 
     QNetworkRequest request(m_source);
diff --git a/src/imports/qtcanvas3d/teximage3d_p.h b/src/imports/qtcanvas3d/teximage3d_p.h
index 6789a2eced9a8dc57c5b01929c019f545179d0ae..59bd0d6c9dcea5a68299d6eaaa61e65ac66bd9bd 100644
--- a/src/imports/qtcanvas3d/teximage3d_p.h
+++ b/src/imports/qtcanvas3d/teximage3d_p.h
@@ -51,6 +51,7 @@
 #include "abstractobject3d_p.h"
 
 #include <QtCore/QUrl>
+#include <QtCore/QPointer>
 #include <QtGui/QImage>
 #include <QtNetwork/QNetworkAccessManager>
 #include <QtNetwork/QNetworkReply>
@@ -159,7 +160,7 @@ private:
     bool m_pixelCacheFlipY;
     QImage m_glImage;
     QVariant *m_anyValue;
-    CanvasTextureImageFactory *m_parentFactory;
+    QPointer<CanvasTextureImageFactory> m_parentFactory;
 };
 
 QT_CANVAS3D_END_NAMESPACE