Index: /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerDockingMainForm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerDockingMainForm.cs	(revision 13585)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerDockingMainForm.cs	(revision 13586)
@@ -80,6 +80,4 @@
         startPage.Show();
       }
-
-      WindowState = Properties.Settings.Default.ShowMaximized ? FormWindowState.Maximized : FormWindowState.Normal;
     }
 
@@ -93,5 +91,4 @@
     protected override void OnClosed(EventArgs e) {
       base.OnClosed(e);
-      Properties.Settings.Default.ShowMaximized = WindowState == FormWindowState.Maximized;
       Properties.Settings.Default.CollapseClipboard = clipboard.Collapsed;
       OperatorsSidebar operatorsSidebar = MainFormManager.MainForm.Views.OfType<OperatorsSidebar>().FirstOrDefault();
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerMultipleDocumentMainForm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerMultipleDocumentMainForm.cs	(revision 13585)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerMultipleDocumentMainForm.cs	(revision 13586)
@@ -80,6 +80,4 @@
         startPage.Show();
       }
-
-      WindowState = Properties.Settings.Default.ShowMaximized ? FormWindowState.Maximized : FormWindowState.Normal;
     }
 
@@ -93,5 +91,4 @@
     protected override void OnClosed(EventArgs e) {
       base.OnClosed(e);
-      Properties.Settings.Default.ShowMaximized = WindowState == FormWindowState.Maximized;
       Properties.Settings.Default.CollapseClipboard = clipboard.Collapsed;
       OperatorsSidebar operatorsSidebar = MainFormManager.MainForm.Views.OfType<OperatorsSidebar>().FirstOrDefault();
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerSingleDocumentMainForm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerSingleDocumentMainForm.cs	(revision 13585)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/OptimizerSingleDocumentMainForm.cs	(revision 13586)
@@ -80,6 +80,4 @@
         startPage.Show();
       }
-
-      WindowState = Properties.Settings.Default.ShowMaximized ? FormWindowState.Maximized : FormWindowState.Normal;
     }
 
@@ -93,5 +91,4 @@
     protected override void OnClosed(EventArgs e) {
       base.OnClosed(e);
-      Properties.Settings.Default.ShowMaximized = WindowState == FormWindowState.Maximized;
       Properties.Settings.Default.CollapseClipboard = clipboard.Collapsed;
       OperatorsSidebar operatorsSidebar = MainFormManager.MainForm.Views.OfType<OperatorsSidebar>().FirstOrDefault();
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/Plugin.cs.frame	(revision 13585)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/Plugin.cs.frame	(revision 13586)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Drawing;
 using System.Linq;
 using System.Windows.Forms;
@@ -60,13 +61,14 @@
       }
 
-      if (mainForm != null) {      
-        mainForm.Location = Settings.Default.MainFormLocation;
-        mainForm.Size = Settings.Default.MainFormSize;
-        mainForm.Load += (sender, eventArgs) => {
+      if (mainForm != null) {
+        if (CheckSavedMainFormSettings()) {
+          mainForm.Location = Settings.Default.MainFormLocation;
+          mainForm.Size = Settings.Default.MainFormSize;
           mainForm.WindowState = Settings.Default.MainFormWindowState;
-        };
+        }
 
         mainForm.FormClosing += (sender, eventArgs) => {
-          Settings.Default.MainFormWindowState = mainForm.WindowState;
+          if (mainForm.WindowState != FormWindowState.Minimized)
+            Settings.Default.MainFormWindowState = mainForm.WindowState;
           if (mainForm.WindowState != FormWindowState.Normal) {
             Settings.Default.MainFormLocation = mainForm.RestoreBounds.Location;
@@ -90,4 +92,12 @@
       }
     }
+
+    private bool CheckSavedMainFormSettings() {
+      var formArea = new Rectangle(Settings.Default.MainFormLocation, Settings.Default.MainFormSize);
+      var screenArea = Screen.FromRectangle(formArea).WorkingArea;
+      var overlappingArea = Rectangle.Intersect(formArea, screenArea);
+      bool offLimits = overlappingArea.IsEmpty || overlappingArea.Width * overlappingArea.Height < formArea.Width * formArea.Height * 0.25;
+      return !formArea.IsEmpty && !offLimits;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Settings.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Settings.Designer.cs	(revision 13585)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Settings.Designer.cs	(revision 13586)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.34209
+//     Runtime Version:4.0.30319.42000
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -13,5 +13,5 @@
     
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
         
@@ -57,16 +57,4 @@
             set {
                 this["ShowClipboard"] = value;
-            }
-        }
-        
-        [global::System.Configuration.UserScopedSettingAttribute()]
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        [global::System.Configuration.DefaultSettingValueAttribute("True")]
-        public bool ShowMaximized {
-            get {
-                return ((bool)(this["ShowMaximized"]));
-            }
-            set {
-                this["ShowMaximized"] = value;
             }
         }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Settings.settings
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Settings.settings	(revision 13585)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Settings.settings	(revision 13586)
@@ -10,7 +10,4 @@
     </Setting>
     <Setting Name="ShowClipboard" Type="System.Boolean" Scope="User">
-      <Value Profile="(Default)">True</Value>
-    </Setting>
-    <Setting Name="ShowMaximized" Type="System.Boolean" Scope="User">
       <Value Profile="(Default)">True</Value>
     </Setting>
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/app.config
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/app.config	(revision 13585)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/app.config	(revision 13586)
@@ -15,7 +15,4 @@
             </setting>
             <setting name="ShowClipboard" serializeAs="String">
-                <value>True</value>
-            </setting>
-            <setting name="ShowMaximized" serializeAs="String">
                 <value>True</value>
             </setting>
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Properties/Settings.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Properties/Settings.Designer.cs	(revision 13585)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Properties/Settings.Designer.cs	(revision 13586)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.34014
+//     Runtime Version:4.0.30319.42000
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -13,5 +13,5 @@
     
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
     public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
         
@@ -83,4 +83,40 @@
             }
         }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("0, 0")]
+        public global::System.Drawing.Point StarterFormLocation {
+            get {
+                return ((global::System.Drawing.Point)(this["StarterFormLocation"]));
+            }
+            set {
+                this["StarterFormLocation"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("0, 0")]
+        public global::System.Drawing.Size StarterFormSize {
+            get {
+                return ((global::System.Drawing.Size)(this["StarterFormSize"]));
+            }
+            set {
+                this["StarterFormSize"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("Normal")]
+        public global::System.Windows.Forms.FormWindowState StarterFormWindowState {
+            get {
+                return ((global::System.Windows.Forms.FormWindowState)(this["StarterFormWindowState"]));
+            }
+            set {
+                this["StarterFormWindowState"] = value;
+            }
+        }
     }
 }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Properties/Settings.settings
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Properties/Settings.settings	(revision 13585)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Properties/Settings.settings	(revision 13586)
@@ -18,4 +18,13 @@
       <Value Profile="(Default)">http://services.heuristiclab.com/Deployment-3.3/AdminService.svc</Value>
     </Setting>
+    <Setting Name="StarterFormLocation" Type="System.Drawing.Point" Scope="User">
+      <Value Profile="(Default)">0, 0</Value>
+    </Setting>
+    <Setting Name="StarterFormSize" Type="System.Drawing.Size" Scope="User">
+      <Value Profile="(Default)">0, 0</Value>
+    </Setting>
+    <Setting Name="StarterFormWindowState" Type="System.Windows.Forms.FormWindowState" Scope="User">
+      <Value Profile="(Default)">Normal</Value>
+    </Setting>
   </Settings>
 </SettingsFile>
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs	(revision 13585)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs	(revision 13586)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using System.Drawing;
 using System.IO;
 using System.Linq;
@@ -29,4 +30,5 @@
 using HeuristicLab.PluginInfrastructure.Advanced;
 using HeuristicLab.PluginInfrastructure.Manager;
+using HeuristicLab.PluginInfrastructure.Properties;
 
 namespace HeuristicLab.PluginInfrastructure.Starter {
@@ -67,4 +69,10 @@
       splashScreen.Show(this, "Loading HeuristicLab...");
 
+      if (CheckSavedStarterFormSettings()) {
+        Location = Settings.Default.StarterFormLocation;
+        Size = Settings.Default.StarterFormSize;
+        WindowState = Settings.Default.StarterFormWindowState;
+      }
+
       pluginManager.DiscoverAndCheckPlugins();
       UpdateApplicationsList();
@@ -96,4 +104,16 @@
       splashScreen.Close();
       abortRequested = true;
+
+      if (WindowState != FormWindowState.Minimized)
+        Settings.Default.StarterFormWindowState = WindowState;
+      if (WindowState != FormWindowState.Normal) {
+        Settings.Default.StarterFormLocation = RestoreBounds.Location;
+        Settings.Default.StarterFormSize = RestoreBounds.Size;
+      } else if (WindowState == FormWindowState.Normal) {
+        Settings.Default.StarterFormLocation = Location;
+        Settings.Default.StarterFormSize = Size;
+      }
+
+      Settings.Default.Save();
     }
 
@@ -177,4 +197,12 @@
 
     #region Helpers
+    private bool CheckSavedStarterFormSettings() {
+      var formArea = new Rectangle(Settings.Default.StarterFormLocation, Settings.Default.StarterFormSize);
+      var screenArea = Screen.FromRectangle(formArea).WorkingArea;
+      var overlappingArea = Rectangle.Intersect(formArea, screenArea);
+      bool offLimits = overlappingArea.IsEmpty || overlappingArea.Width * overlappingArea.Height < formArea.Width * formArea.Height * 0.25;
+      return !formArea.IsEmpty && !offLimits;
+    }
+
     private void UpdateApplicationsList() {
       if (InvokeRequired) Invoke((Action)UpdateApplicationsList);
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/app.config
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/app.config	(revision 13585)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/3.3/app.config	(revision 13586)
@@ -23,4 +23,13 @@
       <setting name="UpdateLocationAdministrationAddress" serializeAs="String">
         <value>http://services.heuristiclab.com/Deployment-3.3/AdminService.svc</value>
+      </setting>
+      <setting name="StarterFormLocation" serializeAs="String">
+        <value>0, 0</value>
+      </setting>
+      <setting name="StarterFormSize" serializeAs="String">
+        <value>0, 0</value>
+      </setting>
+      <setting name="StarterFormWindowState" serializeAs="String">
+        <value>Normal</value>
       </setting>
     </HeuristicLab.PluginInfrastructure.Properties.Settings>
