diff --git a/saoridef.h b/saoridef.h
index d810c7b..3feeb97 100644
--- a/saoridef.h
+++ b/saoridef.h
@@ -51,6 +51,7 @@
 #define SAORI_MASTODON_APIPATH_STATUS_REBLOG "/api/v1/statuses/%1/reblog"
 #define SAORI_MASTODON_APIPATH_STATUS_UNREBLOG "/api/v1/statuses/%1/unreblog"
 
+#define SAORI_SETTING_GEOMETRY "application/geometry"
 #define SAORI_SETTING_GETLIMIT "application/getlimit"
 #define SAORI_SETTING_GETLIMIT_DEFAULT 10
 #define SAORI_SETTING_NSFWBLUR "application/nsfwblur"
diff --git a/saoriwindow.cpp b/saoriwindow.cpp
index 253f19c..01111b5 100644
--- a/saoriwindow.cpp
+++ b/saoriwindow.cpp
@@ -39,6 +39,7 @@
     QMainWindow(parent),
     ui(new Ui::SaoriWindow)
 {
+    m_geometry = SaoriApplication::saori()->setting()->value(SAORI_SETTING_GEOMETRY,QRect(0,0,1000,700)).toRect();
     ui->setupUi(this);
     connect(ui->action_Quit,&QAction::triggered,SaoriApplication::saori(),&SaoriApplication::quit);
     m_configDialog = new SaoriConfigureDialog();
@@ -48,19 +49,21 @@
     m_tray = new SaoriSystemTray();
     connect(m_tray,&SaoriSystemTray::showMainwindow,this,[=](){
         if (isHidden()) {
-            setGeometry(m_geometry);
-            move(m_geometry.topLeft());
             show();
+            setGeometry(m_geometry);
         }
     });
     updateTimelineList();
     openPinedView();
+    setGeometry(m_geometry);
 }
 
 SaoriWindow::~SaoriWindow()
 {
+    m_geometry = geometry();
     delete ui;
     delete m_configDialog;
+    SaoriApplication::saori()->setting()->setValue(SAORI_SETTING_GEOMETRY,m_geometry);
 }
 
 QPair<QString,QString> SaoriWindow::getTimelineTitle(const QString timeline)