diff --git a/src/Reveal.cpp b/src/Reveal.cpp
index 478110c230aedd6edfcdc254ef292c8b7978fef8..85e9518f69bbe9d39456f16dd3ec56b37093f4ce 100644
--- a/src/Reveal.cpp
+++ b/src/Reveal.cpp
@@ -629,6 +629,7 @@ void Reveal::testDelete() {
     }
     m_listenersDeleteVec.clear();
 
+
     if(m_modulesDeleteVec.size()>0) {
         MainWindow::getInstance()->refreshModules(true, erasedListeners);
     }
diff --git a/src/modules/RevealedPathModule.cpp b/src/modules/RevealedPathModule.cpp
index 46b6492ee8601cba1453e8b9759c791dcba405d9..bcd769bd90052b9ff369cc9876732a069d7aac09 100644
--- a/src/modules/RevealedPathModule.cpp
+++ b/src/modules/RevealedPathModule.cpp
@@ -87,6 +87,12 @@ RevealedPathModule::RevealedPathModule(): RevealedModule() {
 
 RevealedPathModule::~RevealedPathModule() {
     Reveal::getInstance()->unregisterGeom(m_pathGeom);
+    Reveal::getInstance()->removeModuleListObserver(this);
+}
+
+void RevealedPathModule::deleteModule() {
+    RevealedModule::deleteModule();
+    Reveal::getInstance()->removeModuleListObserver(this);
 }
 
 void RevealedPathModule::load(xmlNodePtr node) {
diff --git a/src/modules/RevealedPathModule.hpp b/src/modules/RevealedPathModule.hpp
index c815025a7cc28994cfc384c7d261a9268b64ab93..d2d3c680e7fd728362d2c47a350ebaeb04b4406f 100644
--- a/src/modules/RevealedPathModule.hpp
+++ b/src/modules/RevealedPathModule.hpp
@@ -34,6 +34,8 @@ class RevealedPathModule : public RevealedModule, public ModuleListObserver {
         RevealedPathModule();
         virtual ~RevealedPathModule();
 
+        virtual void deleteModule();
+
         virtual void load(xmlNodePtr node);
         virtual xmlNodePtr save(xmlNodePtr parentNode);