diff --git a/src/abstractobject3d.cpp b/src/abstractobject3d.cpp
index 147db70fdbad7d496f67f6e6498eec127b38bb38..75871bdcb5ac91c38f8d4f3c09388ebc26654147 100644
--- a/src/abstractobject3d.cpp
+++ b/src/abstractobject3d.cpp
@@ -42,7 +42,8 @@ QT_CANVAS3D_BEGIN_NAMESPACE
  * \internal
  */
 CanvasAbstractObject::CanvasAbstractObject(QObject *parent) :
-    QObject(parent)
+    QObject(parent),
+    m_hasName(false)
 {
     m_name = QString("0x%1").arg((long long) this, 0, 16);
 }
@@ -63,6 +64,7 @@ void CanvasAbstractObject::setName(const QString &name)
         return;
 
     m_name = name;
+    m_hasName = true;
 
     emit nameChanged(m_name);
 }
@@ -75,4 +77,13 @@ const QString &CanvasAbstractObject::name() const
     return m_name;
 }
 
+/*!
+ * \internal
+ */
+bool CanvasAbstractObject::hasSpecificName() const
+{
+    return m_hasName;
+}
+
+
 QT_CANVAS3D_END_NAMESPACE
diff --git a/src/abstractobject3d_p.h b/src/abstractobject3d_p.h
index ff398360863813882b621226f292339416549735..27cda48c1c94436aee39c3c8ff674778eb9b0fd5 100644
--- a/src/abstractobject3d_p.h
+++ b/src/abstractobject3d_p.h
@@ -64,12 +64,14 @@ public:
 
     void setName(const QString &name);
     const QString &name() const;
+    bool hasSpecificName() const;
 
 signals:
     void nameChanged(const QString &name);
 
 private:
     QString m_name;
+    bool m_hasName;
 };
 
 QT_CANVAS3D_END_NAMESPACE
diff --git a/src/context3d.cpp b/src/context3d.cpp
index 5fc0ffcdf55c4f970173408b8bb872566c8e90e7..8be26a3887f3649cc2189d6e906d70ec4fa12e86 100644
--- a/src/context3d.cpp
+++ b/src/context3d.cpp
@@ -1127,6 +1127,11 @@ void CanvasContext::texImage2D(glEnums target, int level, glEnums internalformat
                                      << ":INVALID_OPERATION Currently bound texture is deleted";
         m_error = INVALID_OPERATION;
         return;
+    } else if (image == 0) {
+        if (m_logAllErrors) qDebug() << "Context3D::" << __FUNCTION__
+                                     << ":INVALID_OPERATION Given image was null";
+        m_error = INVALID_OPERATION;
+        return;
     }
 
     uchar *pixels = 0;
@@ -1152,6 +1157,10 @@ void CanvasContext::texImage2D(glEnums target, int level, glEnums internalformat
         return;
     }
 
+    if (!m_currentTexture->hasSpecificName()) {
+        m_currentTexture->setName("ImageTexture_"+image->name());
+    }
+
     glTexImage2D(target, level, internalformat, image->width(), image->height(), 0, format, type,
                  pixels);
 }