diff --git a/beat/editor/widgets/mainwindow.py b/beat/editor/widgets/mainwindow.py
index b7ed7c0cdeabfcdf202db2889b11e47896ff2a0b..dfd009def2a35be66c60574600a775dcb2c5ee33 100644
--- a/beat/editor/widgets/mainwindow.py
+++ b/beat/editor/widgets/mainwindow.py
@@ -27,6 +27,7 @@ from PyQt5.QtWidgets import QHBoxLayout
 from PyQt5.QtWidgets import QMainWindow
 from PyQt5.QtWidgets import QWidget
 from PyQt5.QtWidgets import qApp
+from PyQt5.QtCore import QSettings
 
 from .assetbrowser import AssetBrowser
 from .assetwidget import AssetWidget
@@ -42,6 +43,13 @@ class MainWindow(QMainWindow):
 
         super(MainWindow, self).__init__(parent)
 
+        # MainWindow settings
+        self.settings = QSettings("beat", "editor")
+        if not self.settings.value("geometry") is None:
+            self.restoreGeometry(self.settings.value("geometry"))
+        if not self.settings.value("windowState") is None:
+            self.restoreState(self.settings.value("windowState"))
+
         menubar = self.menuBar()
         fileMenu = menubar.addMenu(self.tr("File"))
         quitAction = fileMenu.addAction(self.tr("Quit"))
@@ -71,3 +79,8 @@ class MainWindow(QMainWindow):
     def show_settings(self):
         """Show settings dialog"""
         pass
+
+    def closeEvent(self, event):
+        self.settings.setValue("geometry", self.saveGeometry())
+        self.settings.setValue("windowState", self.saveState())
+        QMainWindow.closeEvent(self, event)