Index: src/org/openstreetmap/josm/gui/GettingStarted.java
===================================================================
--- src/org/openstreetmap/josm/gui/GettingStarted.java	(revision 14601)
+++ src/org/openstreetmap/josm/gui/GettingStarted.java	(working copy)
@@ -5,7 +5,6 @@
 
 import java.awt.BorderLayout;
 import java.awt.EventQueue;
-import java.awt.Graphics;
 import java.io.IOException;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
@@ -15,7 +14,6 @@
 import javax.swing.JComponent;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
-import javax.swing.Timer;
 import javax.swing.border.EmptyBorder;
 import javax.swing.event.HyperlinkEvent;
 import javax.swing.event.HyperlinkListener;
@@ -22,7 +20,6 @@
 
 import org.openstreetmap.josm.actions.DownloadPrimitiveAction;
 import org.openstreetmap.josm.data.Version;
-import org.openstreetmap.josm.gui.animation.AnimationExtensionManager;
 import org.openstreetmap.josm.gui.datatransfer.OpenTransferHandler;
 import org.openstreetmap.josm.gui.dialogs.MenuItemSearchDialog;
 import org.openstreetmap.josm.gui.preferences.server.ProxyPreference;
@@ -48,7 +45,6 @@
     private final LinkGeneral lg;
     private String content = "";
     private boolean contentInitialized;
-    private final Timer timer = new Timer(50, e -> repaint());
 
     private static final String STYLE = "<style type=\"text/css\">\n"
             + "body {font-family: sans-serif; font-weight: bold; }\n"
@@ -147,28 +143,6 @@
         setTransferHandler(new OpenTransferHandler());
     }
 
-    @Override
-    public void addNotify() {
-        timer.start();
-        super.addNotify();
-    }
-
-    @Override
-    public void removeNotify() {
-        timer.stop();
-        super.removeNotify();
-    }
-
-    @Override
-    public void paint(Graphics g) {
-        super.paint(g);
-        if (isShowing()) {
-            AnimationExtensionManager.getExtension().adjustForSize(getWidth(), getHeight());
-            AnimationExtensionManager.getExtension().animate();
-            AnimationExtensionManager.getExtension().paint(g);
-        }
-    }
-
     private void getMOTD() {
         // Asynchronously get MOTD to speed-up JOSM startup
         Thread t = new Thread((Runnable) () -> {
Index: src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java	(revision 14601)
+++ src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java	(working copy)
@@ -11,8 +11,6 @@
 import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.awt.event.ActionEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
 
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
@@ -42,8 +40,7 @@
 
     private final PreferenceTabbedPane tpPreferences = new PreferenceTabbedPane();
     private final ContextSensitiveHelpAction helpAction = new ContextSensitiveHelpAction();
-    private final WindowEventHandler windowEventHandler = new WindowEventHandler();
-    private boolean canceled;
+    public boolean okPressed;
 
     /**
      * Constructs a new {@code PreferenceDialog}.
@@ -56,6 +53,7 @@
         // set the maximum width to the current screen. If the dialog is opened on a
         // smaller screen than before, this will reset the stored preference.
         this.setMaximumSize(GuiHelper.getScreenSize());
+        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
     }
 
     protected JPanel buildActionPanel() {
@@ -84,7 +82,6 @@
         tpPreferences.buildGui();
         tpPreferences.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
         c.add(buildActionPanel(), BorderLayout.SOUTH);
-        addWindowListener(windowEventHandler);
 
         InputMapUtils.addEscapeAction(getRootPane(), new CancelAction());
         setHelpContext(HelpUtil.ht("/Action/Preferences"));
@@ -110,17 +107,13 @@
     }
 
     /**
-     * Determines if preferences changes have been canceled.
-     * @return {@code true} if preferences changes have been canceled
+     * Determines if preferences changes have been cancelled.
+     * @return {@code true} if preferences changes have been cancelled
      */
     public boolean isCanceled() {
-        return canceled;
+        return !okPressed;
     }
 
-    protected void setCanceled(boolean canceled) {
-        this.canceled = canceled;
-    }
-
     @Override
     public void setVisible(boolean visible) {
         if (visible) {
@@ -175,7 +168,6 @@
         }
 
         public void cancel() {
-            setCanceled(true);
             dispose();
         }
 
@@ -200,21 +192,9 @@
             }
 
             tpPreferences.savePreferences();
-            setCanceled(false);
+            okPressed = true;
             dispose();
         }
     }
 
-    class WindowEventHandler extends WindowAdapter {
-        @Override
-        public void windowClosing(WindowEvent arg0) {
-            new CancelAction().cancel();
-        }
-    }
-
-    @Override
-    public void dispose() {
-        removeWindowListener(windowEventHandler);
-        super.dispose();
-    }
 }
