Index: src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- src/org/openstreetmap/josm/gui/MainApplication.java	(revision 1212)
+++ src/org/openstreetmap/josm/gui/MainApplication.java	(working copy)
@@ -213,7 +213,7 @@
         mainFrame.setVisible(true);
         splash.closeSplash();
 
-        if (!args.containsKey("no-fullscreen") && !args.containsKey("geometry") && Toolkit.getDefaultToolkit().isFrameStateSupported(JFrame.MAXIMIZED_BOTH))
+        if (!args.containsKey("no-fullscreen") && !args.containsKey("geometry") && Main.pref.get("gui.geometry") == null && Toolkit.getDefaultToolkit().isFrameStateSupported(JFrame.MAXIMIZED_BOTH))
             mainFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
 
         EventQueue.invokeLater(new Runnable(){
Index: src/org/openstreetmap/josm/Main.java
===================================================================
--- src/org/openstreetmap/josm/Main.java	(revision 1212)
+++ src/org/openstreetmap/josm/Main.java	(working copy)
@@ -411,8 +411,11 @@
         UIManager.put("OptionPane.noIcon", UIManager.get("OptionPane.cancelIcon"));
 
         Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
+	String geometry = Main.pref.get("gui.geometry");
         if (args.containsKey("geometry")) {
-            String geometry = args.get("geometry").iterator().next();
+            geometry = args.get("geometry").iterator().next();
+	}
+	if (geometry != null) {
             final Matcher m = Pattern.compile("(\\d+)x(\\d+)(([+-])(\\d+)([+-])(\\d+))?").matcher(geometry);
             if (m.matches()) {
                 int w = Integer.valueOf(m.group(1));
