diff --git a/mainwindow.cpp b/mainwindow.cpp
index bb5812c010d001ed9c7da3ff794b5d381175c7f7..2461ff40bba569d4028545d1ab0b17136914a50f 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -80,7 +80,14 @@ MainWindow::MainWindow(QWidget* parent) :
     }
 #endif
 
-    resize(1054, 600);
+    QSettings settings;
+    QVariant size = settings.value(SettingsKey::savedSize);
+    QVariant pos = settings.value(SettingsKey::savedPos);
+    if (size.isValid() && pos.isValid()) {
+        resize(size.toSize());
+        move(pos.toPoint());
+    } else
+        resize(1054, 600);
 
 #ifdef ENABLE_AUTOUPDATE
     win_sparkle_set_appcast_url("http://gpl.savoirfairelinux.net/ring-download/windows/winsparkle-ring.xml");
@@ -192,5 +199,8 @@ MainWindow::closeEvent(QCloseEvent* event)
     if (settings.value(SettingsKey::closeOrMinimized).toBool()) {
         this->hide();
         event->ignore();
+    } else {
+        settings.setValue(SettingsKey::savedSize, size());
+        settings.setValue(SettingsKey::savedPos, pos());
     }
 }
diff --git a/settingskey.h b/settingskey.h
index 58080fb62482931676e90f47cd030233754f84a0..0620901c583fc64b2a44737e7095365e62af4977 100644
--- a/settingskey.h
+++ b/settingskey.h
@@ -22,7 +22,8 @@ namespace SettingsKey {
 
 constexpr static char closeOrMinimized[] = "closeOrMin";
 constexpr static char autoAnswer[] = "autoAnswer";
-
+constexpr static char savedSize[] = "savedSize";
+constexpr static char savedPos[] = "savedPos";
 }
 
 #define accountAutoAnswer(A) (A+SettingsKey::autoAnswer)