diff --git a/Modules/Wrappers/QtWidget/src/otbApplicationLauncherQt.cxx b/Modules/Wrappers/QtWidget/src/otbApplicationLauncherQt.cxx
index 99e0779a571dd5ebcb88e8b87d1a9f51f7b44290..3fa73b3298cd958948aad992c45e20821d23b33b 100644
--- a/Modules/Wrappers/QtWidget/src/otbApplicationLauncherQt.cxx
+++ b/Modules/Wrappers/QtWidget/src/otbApplicationLauncherQt.cxx
@@ -103,5 +103,12 @@ int main(int argc, char* argv[])
   mainWindow->show();
 
   // Start event processing loop
-  return qtApp.exec();
+  int ret = qtApp.exec();
+
+  // Clean resources
+  if (mainWindow) delete mainWindow;
+  app = ITK_NULLPTR;
+  ApplicationRegistry::CleanRegistry();
+
+  return ret;
 }
diff --git a/Modules/Wrappers/QtWidget/test/otbWrapperQtWidgetShowWidget.cxx b/Modules/Wrappers/QtWidget/test/otbWrapperQtWidgetShowWidget.cxx
index 21067b3270fd1a8c5311136271a49a97fb3e3837..c19a43065bf43682d6355212ea8247f89e055582 100644
--- a/Modules/Wrappers/QtWidget/test/otbWrapperQtWidgetShowWidget.cxx
+++ b/Modules/Wrappers/QtWidget/test/otbWrapperQtWidgetShowWidget.cxx
@@ -104,6 +104,8 @@ int otbWrapperQtWidgetShowWidget(int argc, char* argv[])
     // clean main window
     if (mainWindow) delete mainWindow;
     }
+
+  ApplicationRegistry::CleanRegistry();
   
   if (result)
     {