diff --git a/core/src/cz/nic/tablexia/Tablexia.java b/core/src/cz/nic/tablexia/Tablexia.java
index 7847e5932bc16622125fcf0e554ee41ca2ec7d41..dd026cd5f75f8d0a12eff2f1c5dadfe01776724d 100644
--- a/core/src/cz/nic/tablexia/Tablexia.java
+++ b/core/src/cz/nic/tablexia/Tablexia.java
@@ -141,7 +141,7 @@ public class Tablexia extends TablexiaApplication {
         Log.setLoglevel(TablexiaSettings.getInstance().getLogLevel());
 
         // init data storage
-        TablexiaStorage.init(sqlConnectionType);
+        TablexiaStorage.init(sqlConnectionType, resetState);
 		
 		// init event bus handlers
 		ApplicationBus.getInstance().subscribe(this);
diff --git a/core/src/cz/nic/tablexia/TablexiaStorage.java b/core/src/cz/nic/tablexia/TablexiaStorage.java
index 0581c5f1ad1d96b16054c8c4678ce79006609b6a..079bc84f2044d042bdc9258bea59fd8cdefbb2fc 100644
--- a/core/src/cz/nic/tablexia/TablexiaStorage.java
+++ b/core/src/cz/nic/tablexia/TablexiaStorage.java
@@ -30,7 +30,7 @@ public class TablexiaStorage {
         this.connection = connection;
     }
 
-    static void init(Tablexia.SQLConnectionType connectionType) {
+    static void init(Tablexia.SQLConnectionType connectionType, boolean resetState) {
         if (instance == null) {
             if (!DATABASE_DIRECTORY.exists()) {
                 DATABASE_DIRECTORY.mkdirs();
@@ -40,6 +40,9 @@ public class TablexiaStorage {
                 Connection connection = DriverManager.getConnection(connectionType.getConnectionString() + DATABASE_DIRECTORY.file().getAbsolutePath() + "/" + DATABASE_NAME);
                 instance = new TablexiaStorage(connection);
                 instance.initTables();
+                if (resetState) {
+                    instance.resetScreenState();
+                }
             } catch (ClassNotFoundException e) {
                 Log.err(TablexiaStorage.class, "Cannot find class for database driver!", e);
             } catch (SQLException e) {
@@ -133,12 +136,21 @@ public class TablexiaStorage {
         return screenState;
     }
 
-    public void saveScreenState(Class<? extends AbstractTablexiaScreen> screenClass, Map<String, String> screenState) {
+    private void resetScreenState() {
+        Statement statement = createStatement();
         try {
-            connection.setAutoCommit(false);
-            Statement statement = createStatement();
             statement.executeUpdate(SCREEN_STATE_DROP_TABLE);
             statement.executeUpdate(SCREEN_STATE_CREATE_TABLE);
+            statement.close();
+        } catch (SQLException e) {
+            Log.err(getClass(), "Cannot reset screen state in DB!", e);
+        }
+    }
+
+    public void saveScreenState(Class<? extends AbstractTablexiaScreen> screenClass, Map<String, String> screenState) {
+        try {
+            connection.setAutoCommit(false);
+            resetScreenState();
 
             try {
                 for (String key: screenState.keySet()) {
@@ -147,8 +159,6 @@ public class TablexiaStorage {
             } catch (SQLException e) {
                 Log.err(getClass(), "Cannot insert screen state into DB!", e);
             }
-
-            statement.close();
             connection.commit();
             connection.setAutoCommit(true);
         } catch (SQLException e) {