diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index bf0a36512ae26e0d712330d58d4ac26819388f8e..edd68cb14dc4de9eb357da5bffe3724cb61b672b 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -18,6 +18,7 @@
 
 import os
 import sys
+import time
 import logging
 import subprocess
 from queue import Queue
@@ -611,12 +612,16 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         self.conf.set_last_study(self._study.filename)
 
     def _backup(self):
+        logger.debug("Backup signal...")
         if not self.conf.backup_enable:
             return
 
         if self._study is None:
             return
 
+        if self._study.is_saved:
+            return
+
         old = self._study.filename
         file_name = ""
         if old == "" or old is None:
@@ -634,7 +639,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         try:
             sql_request_count = self._study.sql_save_request_count()
             progress = QProgressDialog(
-                "Saving...", None,
+                "Backup...", None,
                 0, sql_request_count,
                 parent=self
             )
@@ -673,7 +678,14 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         res = dlg.exec()
 
         if res == QMessageBox.Ok:
-            self.open_study(self.conf.last_study)
+            old = self.conf.last_study
+            file = self.dialog_reopen_study_select_backup(
+                self.conf.last_study
+            )
+
+            self.open_study(file)
+            self._study.filename = old
+            self.conf.set_last_study(old)
             return True
         elif res == QMessageBox.Open:
             self.open_model()
@@ -681,6 +693,19 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         elif res == QMessageBox.Cancel:
             return False
 
+    def dialog_reopen_study_select_backup(self, filename):
+        file = self.conf.last_study
+        backup = self.conf.last_study + ".backup"
+
+        if os.path.exists(backup):
+            file_modified_date = time.ctime(os.path.getmtime(file))
+            backup_modified_date = time.ctime(os.path.getmtime(backup))
+            if backup_modified_date > file_modified_date:
+                logger.info(f"Select backup ({backup})")
+                file = backup
+
+        return file
+
     def dialog_close(self, cancel=True):
         dlg = QMessageBox(self)
 
@@ -811,7 +836,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
             dialog.setFileMode(QFileDialog.FileMode.ExistingFile)
             dialog.setDefaultSuffix(".pamhyr")
             # dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden)
-            dialog.setNameFilters(['PamHyr (*.pamhyr)'])
+            dialog.setNameFilters(['PamHyr (*.pamhyr)', 'PamHyr backup (*.pamhyr.backup)'])
             dialog.setDirectory(os.path.dirname(self.conf.last_study))
 
             if dialog.exec_():