diff --git a/src/plugins/imageviewer/imageviewerfile.cpp b/src/plugins/imageviewer/imageviewerfile.cpp
index 479dfa94f9ae1ef08a76acea0b204b34a8515238..663f94a1f7b7ffbfe071091751d54f4c81e6efbc 100644
--- a/src/plugins/imageviewer/imageviewerfile.cpp
+++ b/src/plugins/imageviewer/imageviewerfile.cpp
@@ -97,7 +97,6 @@ Core::IDocument::OpenResult ImageViewerFile::open(QString *errorString, const QS
 Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, const QString &fileName)
 {
     cleanUp();
-    m_type = TypeInvalid;
 
     if (!QFileInfo(fileName).isReadable())
         return OpenResult::ReadError;
@@ -112,14 +111,16 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, cons
 
 #ifndef QT_NO_SVG
     if (format.startsWith("svg")) {
-        m_type = TypeSvg;
         m_tempSvgItem = new QGraphicsSvgItem(fileName);
         QRectF bound = m_tempSvgItem->boundingRect();
         if (bound.width() == 0 && bound.height() == 0) {
+            delete m_tempSvgItem;
+            m_tempSvgItem = 0;
             if (errorString)
                 *errorString = tr("Failed to read SVG image.");
             return OpenResult::CannotHandle;
         }
+        m_type = TypeSvg;
         emit imageSizeChanged(QSize());
     } else
 #endif
@@ -133,14 +134,15 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, cons
         m_isPaused = false; // force update
         setPaused(true);
     } else {
-        m_type = TypePixmap;
         m_pixmap = new QPixmap(fileName);
         if (m_pixmap->isNull()) {
             if (errorString)
                 *errorString = tr("Failed to read image.");
             delete m_pixmap;
+            m_pixmap = 0;
             return OpenResult::CannotHandle;
         }
+        m_type = TypePixmap;
         emit imageSizeChanged(m_pixmap->size());
     }
 
@@ -242,10 +244,14 @@ void ImageViewerFile::updateVisibility()
 void ImageViewerFile::cleanUp()
 {
     delete m_pixmap;
+    m_pixmap = 0;
     delete m_movie;
+    m_movie = 0;
 #ifndef QT_NO_SVG
     delete m_tempSvgItem;
+    m_tempSvgItem = 0;
 #endif
+    m_type = TypeInvalid;
 }
 
 bool ImageViewerFile::save(QString *errorString, const QString &fileName, bool autoSave)