diff --git a/src/plugins/bineditor/imageviewer.cpp b/src/plugins/bineditor/imageviewer.cpp
index 2274ab01f6573794fb9f8e0885e17d563f524061..550fe5b7204fb9b29d4fd9c6d548805384378a79 100644
--- a/src/plugins/bineditor/imageviewer.cpp
+++ b/src/plugins/bineditor/imageviewer.cpp
@@ -32,11 +32,14 @@
 #include <coreplugin/icore.h>
 #include <coreplugin/uniqueidmanager.h>
 
+#include <utils/reloadpromptutils.h>
+
 #include <QtCore/QMap>
 #include <QtCore/QFileInfo>
 #include <QtGui/QImageReader>
 #include <QtGui/QWidget>
 #include <QtGui/QGridLayout>
+#include <QtGui/QMainWindow>
 #include <QtDebug>
 
 namespace {
@@ -104,9 +107,42 @@ Core::IFile *ImageViewerFactory::open(const QString & /* fileName */)
 
 // #pragma mark -- ImageViewerFile
 
-void ImageViewerFile::modified(ReloadBehavior * /* behavior */)
+ImageViewerFile::ImageViewerFile(ImageViewer *parent)
+ : Core::IFile(parent),
+    m_editor(parent)
+{
+
+}
+
+void ImageViewerFile::modified(ReloadBehavior * behavior)
 {
-    // TODO
+    switch (*behavior) {
+    case  Core::IFile::ReloadNone:
+        return;
+    case Core::IFile::ReloadUnmodified:
+    case Core::IFile::ReloadAll:
+        m_editor->open(m_fileName);
+        return;
+    case Core::IFile::ReloadPermissions:
+        return;
+    case Core::IFile::AskForReload:
+        break;
+    }
+
+    switch (Utils::reloadPrompt(m_fileName, isModified(), Core::ICore::instance()->mainWindow())) {
+    case Utils::ReloadCurrent:
+        m_editor->open(m_fileName);
+        break;
+    case Utils::ReloadAll:
+        m_editor->open(m_fileName);
+        *behavior = Core::IFile::ReloadAll;
+        break;
+    case Utils::ReloadSkipCurrent:
+        break;
+    case Utils::ReloadNone:
+        *behavior = Core::IFile::ReloadNone;
+        break;
+    }
 }
 
 // #pragma mark -- ImageViewer
@@ -114,7 +150,7 @@ void ImageViewerFile::modified(ReloadBehavior * /* behavior */)
 ImageViewer::ImageViewer(QObject *parent)
     : IEditor(parent)
 {
-    m_file = new ImageViewerFile;
+    m_file = new ImageViewerFile(this);
     m_context << Core::ICore::instance()->uniqueIDManager()->uniqueIdentifier(C_IMAGE_VIEWER);
 
     m_scrollArea = new QScrollArea;
@@ -132,7 +168,7 @@ ImageViewer::ImageViewer(QObject *parent)
 ImageViewer::~ImageViewer()
 {
     delete m_scrollArea;
-    delete m_file;
+    // m_file deleted by parent hierarchy
 }
 
 QList<int> ImageViewer::context() const
diff --git a/src/plugins/bineditor/imageviewer.h b/src/plugins/bineditor/imageviewer.h
index 3dec61297d05d68143234e288a1bb45e73170164..ea170604b6d2c8dad535689b8bec117ba596f4e8 100644
--- a/src/plugins/bineditor/imageviewer.h
+++ b/src/plugins/bineditor/imageviewer.h
@@ -61,11 +61,13 @@ private:
     QStringList m_mimeTypes;
 };
 
+class ImageViewer;
+
 class ImageViewerFile : public Core::IFile
 {
     Q_OBJECT
 public:
-    explicit ImageViewerFile(QObject *parent = 0) : Core::IFile(parent) {}
+    explicit ImageViewerFile(ImageViewer *parent = 0);
 
     bool save(const QString &fileName = QString()) { Q_UNUSED(fileName); return false; }
     QString fileName() const { return m_fileName; }
@@ -87,6 +89,7 @@ public:
 private:
     QString m_fileName;
     QString m_mimeType;
+    ImageViewer *m_editor;
 };
 
 class ImageViewer : public Core::IEditor