Index: applications/editors/josm/plugins/imagery_offset_db/build.xml
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/build.xml	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/build.xml	(revision 34466)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="Imagery Offset Database"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="13797"/>
+    <property name="plugin.main.version" value="14153"/>
     <property name="plugin.canloadatruntime" value="true"/>
 
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/DeprecateOffsetAction.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/DeprecateOffsetAction.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/DeprecateOffsetAction.java	(revision 34466)
@@ -11,5 +11,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.UserIdentityManager;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -51,5 +50,5 @@
                 tr("Are you sure this imagery offset is wrong?") :
                     tr("Are you sure this calibration geometry is aligned badly?");
-                if (JOptionPane.showConfirmDialog(Main.parent,
+                if (JOptionPane.showConfirmDialog(MainApplication.getMainFrame(),
                         tr("Warning: deprecation is basically irreversible!")+ "\n" + desc,
                         ImageryOffsetTools.DIALOG_TITLE, JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) != JOptionPane.YES_OPTION) {
@@ -81,5 +80,5 @@
         String userName = UserIdentityManager.getInstance().getUserName();
         if (userName == null) {
-            JOptionPane.showMessageDialog(Main.parent, tr("To store imagery offsets you must be a registered OSM user."),
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("To store imagery offsets you must be a registered OSM user."),
                     ImageryOffsetTools.DIALOG_TITLE, JOptionPane.ERROR_MESSAGE);
             return;
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/GetImageryOffsetAction.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/GetImageryOffsetAction.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/GetImageryOffsetAction.java	(revision 34466)
@@ -16,5 +16,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -23,4 +22,5 @@
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -90,5 +90,5 @@
     private void showOffsetDialog(List<ImageryOffsetBase> offsets) {
         if (offsets.isEmpty()) {
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     tr("No data for this region. Please adjust imagery layer and upload an offset."),
                     ImageryOffsetTools.DIALOG_TITLE, JOptionPane.INFORMATION_MESSAGE);
@@ -137,5 +137,5 @@
                 + "&lon=" + DecimalDegreesCoordinateFormat.INSTANCE.lonToString(center)
                 + "&imagery=" + URLEncoder.encode(imagery, "UTF8");
-                int radius = Main.pref.getInt("iodb.radius", -1);
+                int radius = Config.getPref().getInt("iodb.radius", -1);
                 if (radius > 0)
                     query = query + "&radius=" + radius;
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetPlugin.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetPlugin.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetPlugin.java	(revision 34466)
@@ -10,5 +10,4 @@
 import javax.swing.JMenu;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -16,4 +15,5 @@
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
+import org.openstreetmap.josm.spi.preferences.Config;
 
 /**
@@ -49,12 +49,12 @@
 
                 // an ugly hack to add this plugin to the toolbar
-                if (Main.pref.getBoolean("iodb.modify.toolbar", true)) {
+                if (Config.getPref().getBoolean("iodb.modify.toolbar", true)) {
                     List<String> toolbar = new LinkedList<>(ToolbarPreferences.getToolString());
                     if (!toolbar.contains("getoffset")) {
                         toolbar.add("getoffset");
-                        Main.pref.putList("toolbar", toolbar);
+                        Config.getPref().putList("toolbar", toolbar);
                         MainApplication.getToolbar().refreshToolbarControl();
                     }
-                    Main.pref.putBoolean("iodb.modify.toolbar", false);
+                    Config.getPref().putBoolean("iodb.modify.toolbar", false);
                 }
     }
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetTools.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetTools.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetTools.java	(revision 34466)
@@ -7,9 +7,9 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.data.projection.ProjectionRegistry;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
@@ -54,5 +54,5 @@
      */
     public static LatLon getMapCenter() {
-        Projection proj = Main.getProjection();
+        Projection proj = ProjectionRegistry.getProjection();
         return !MainApplication.isDisplayingMapView()
                 ? new LatLon(0, 0) : proj.eastNorth2latlon(MainApplication.getMap().mapView.getCenter());
@@ -67,5 +67,5 @@
      */
     public static LatLon getLayerOffset(AbstractTileSourceLayer layer, LatLon center) {
-        Projection proj = Main.getProjection();
+        Projection proj = ProjectionRegistry.getProjection();
         EastNorth offsetCenter = MainApplication.getMap().mapView.getCenter();
         EastNorth centerOffset = offsetCenter.add(-layer.getDisplaySettings().getDx(),
@@ -91,5 +91,5 @@
      */
     public static OffsetBookmark calculateOffset(ImageryOffset offset) {
-        Projection proj = Main.getProjection();
+        Projection proj = ProjectionRegistry.getProjection();
         EastNorth center = proj.latlon2eastNorth(offset.getPosition());
         EastNorth offsetPos = proj.latlon2eastNorth(offset.getImageryPos());
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetWatcher.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetWatcher.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetWatcher.java	(revision 34466)
@@ -11,7 +11,7 @@
 import java.util.TreeMap;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
+import org.openstreetmap.josm.data.projection.ProjectionRegistry;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
@@ -26,4 +26,5 @@
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Destroyable;
 
@@ -49,5 +50,5 @@
      */
     private ImageryOffsetWatcher() {
-        maxDistance = Main.pref.getDouble("iodb.offset.radius", 15);
+        maxDistance = Config.getPref().getDouble("iodb.offset.radius", 15);
         MapView.addZoomChangeListener(this);
         MainApplication.getLayerManager().addLayerChangeListener(this);
@@ -224,7 +225,7 @@
     private void storeLayerOffset(AbstractTileSourceLayer<?> layer) {
         String id = ImageryOffsetTools.getImageryID(layer);
-        if (!Main.pref.getBoolean("iodb.remember.offsets", true) || id == null)
-            return;
-        List<String> offsets = new LinkedList<>(Main.pref.getList("iodb.stored.offsets"));
+        if (!Config.getPref().getBoolean("iodb.remember.offsets", true) || id == null)
+            return;
+        List<String> offsets = new LinkedList<>(Config.getPref().getList("iodb.stored.offsets"));
         for (Iterator<String> iter = offsets.iterator(); iter.hasNext();) {
             String[] offset = iter.next().split(":");
@@ -235,5 +236,5 @@
         offsets.add(id + ":" + center.lat() + ":" + center.lon() + ":" +
                 layer.getDisplaySettings().getDx() + ":" + layer.getDisplaySettings().getDy());
-        Main.pref.putList("iodb.stored.offsets", offsets);
+        Config.getPref().putList("iodb.stored.offsets", offsets);
     }
 
@@ -243,7 +244,7 @@
     private void loadLayerOffset(AbstractTileSourceLayer<?> layer) {
         String id = ImageryOffsetTools.getImageryID(layer);
-        if (!Main.pref.getBoolean("iodb.remember.offsets", true) || id == null)
-            return;
-        List<String> offsets = Main.pref.getList("iodb.stored.offsets");
+        if (!Config.getPref().getBoolean("iodb.remember.offsets", true) || id == null)
+            return;
+        List<String> offsets = Config.getPref().getList("iodb.stored.offsets");
         for (String offset : offsets) {
             String[] parts = offset.split(":");
@@ -260,5 +261,5 @@
                 if (lastPos.greatCircleDistance(ImageryOffsetTools.getMapCenter()) < Math.max(maxDistance, 3.0) * 1000) {
                     // apply offset
-                    OffsetBookmark bookmark = new OffsetBookmark(Main.getProjection().toCode(),
+                    OffsetBookmark bookmark = new OffsetBookmark(ProjectionRegistry.getProjection().toCode(),
                             null, layer.getName(), "Restored", dparts[2], dparts[3]);
                     layer.getDisplaySettings().setOffsetBookmark(bookmark);
@@ -278,5 +279,5 @@
         @Override
         public void run() {
-            maxDistance = Main.pref.getDouble("iodb.offset.radius", 15);
+            maxDistance = Config.getPref().getDouble("iodb.offset.radius", 15);
             checkOffset();
         }
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetDialog.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetDialog.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetDialog.java	(revision 34466)
@@ -35,5 +35,4 @@
 import javax.swing.border.EmptyBorder;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.UserIdentityManager;
@@ -43,4 +42,5 @@
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.MapViewPaintable;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -57,5 +57,5 @@
     protected static final String PREF_CALIBRATION = "iodb.show.calibration";
     protected static final String PREF_DEPRECATED = "iodb.show.deprecated";
-    private static final int MAX_OFFSETS = Main.pref.getInt("iodb.max.offsets", 4);
+    private static final int MAX_OFFSETS = Config.getPref().getInt("iodb.max.offsets", 4);
 
     /**
@@ -75,5 +75,5 @@
      */
     public OffsetDialog(List<ImageryOffsetBase> offsets) {
-        super(JOptionPane.getFrameForComponent(Main.parent), ImageryOffsetTools.DIALOG_TITLE,
+        super(JOptionPane.getFrameForComponent(MainApplication.getMainFrame()), ImageryOffsetTools.DIALOG_TITLE,
                 MODAL ? ModalityType.DOCUMENT_MODAL : ModalityType.MODELESS);
         setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
@@ -93,18 +93,18 @@
         updateButtonPanel();
         final JCheckBox calibrationBox = new JCheckBox(tr("Calibration geometries"));
-        calibrationBox.setSelected(Main.pref.getBoolean(PREF_CALIBRATION, true));
+        calibrationBox.setSelected(Config.getPref().getBoolean(PREF_CALIBRATION, true));
         calibrationBox.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                Main.pref.putBoolean(PREF_CALIBRATION, calibrationBox.isSelected());
+                Config.getPref().putBoolean(PREF_CALIBRATION, calibrationBox.isSelected());
                 updateButtonPanel();
             }
         });
         final JCheckBox deprecatedBox = new JCheckBox(tr("Deprecated offsets"));
-        deprecatedBox.setSelected(Main.pref.getBoolean(PREF_DEPRECATED, false));
+        deprecatedBox.setSelected(Config.getPref().getBoolean(PREF_DEPRECATED, false));
         deprecatedBox.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                Main.pref.putBoolean(PREF_DEPRECATED, deprecatedBox.isSelected());
+                Config.getPref().putBoolean(PREF_DEPRECATED, deprecatedBox.isSelected());
                 updateButtonPanel();
             }
@@ -128,5 +128,5 @@
         setContentPane(dialog);
         pack();
-        setLocationRelativeTo(Main.parent);
+        setLocationRelativeTo(MainApplication.getMainFrame());
     }
 
@@ -163,6 +163,6 @@
      */
     private List<ImageryOffsetBase> filterOffsets() {
-        boolean showCalibration = Main.pref.getBoolean(PREF_CALIBRATION, true);
-        boolean showDeprecated = Main.pref.getBoolean(PREF_DEPRECATED, false);
+        boolean showCalibration = Config.getPref().getBoolean(PREF_CALIBRATION, true);
+        boolean showDeprecated = Config.getPref().getBoolean(PREF_DEPRECATED, false);
         List<ImageryOffsetBase> filteredOffsets = new ArrayList<>();
         for (ImageryOffsetBase offset : offsets) {
@@ -246,5 +246,5 @@
         boolean closeDialog = MODAL || selectedOffset == null
                 || selectedOffset instanceof CalibrationObject
-                || Main.pref.getBoolean("iodb.close.on.select", true);
+                || Config.getPref().getBoolean("iodb.close.on.select", true);
         if (closeDialog) {
             MapView.removeZoomChangeListener(this);
@@ -275,11 +275,11 @@
             ImageryOffsetWatcher.getInstance().markGood();
             MainApplication.getMap().repaint();
-            if (!Main.pref.getBoolean("iodb.offset.message", false)) {
-                JOptionPane.showMessageDialog(Main.parent,
+            if (!Config.getPref().getBoolean("iodb.offset.message", false)) {
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                         tr("The topmost imagery layer has been shifted to presumably match\n"
                                 + "OSM data in the area. Please check that the offset is still valid\n"
                                 + "by downloading GPS tracks and comparing them and OSM data to the imagery."),
                         ImageryOffsetTools.DIALOG_TITLE, JOptionPane.INFORMATION_MESSAGE);
-                Main.pref.putBoolean("iodb.offset.message", true);
+                Config.getPref().putBoolean("iodb.offset.message", true);
             }
         } else if (selectedOffset instanceof CalibrationObject) {
@@ -287,10 +287,10 @@
             MainApplication.getLayerManager().addLayer(clayer);
             clayer.panToCenter();
-            if (!Main.pref.getBoolean("iodb.calibration.message", false)) {
-                JOptionPane.showMessageDialog(Main.parent,
+            if (!Config.getPref().getBoolean("iodb.calibration.message", false)) {
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                         tr("A layer has been added with a calibration geometry. Hide data layers,\n"
                                 + "find the corresponding feature on the imagery layer and move it accordingly."),
                         ImageryOffsetTools.DIALOG_TITLE, JOptionPane.INFORMATION_MESSAGE);
-                Main.pref.putBoolean("iodb.calibration.message", true);
+                Config.getPref().putBoolean("iodb.calibration.message", true);
             }
         }
@@ -332,5 +332,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            String base = Main.pref.get("url.openstreetmap-wiki", "https://wiki.openstreetmap.org/wiki/");
+            String base = Config.getPref().get("url.openstreetmap-wiki", "https://wiki.openstreetmap.org/wiki/");
             String lang = LanguageInfo.getWikiLanguagePrefix();
             String page = "Imagery_Offset_Database";
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetDialogButton.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetDialogButton.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetDialogButton.java	(revision 34466)
@@ -24,8 +24,8 @@
 import javax.swing.SwingConstants;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.data.projection.ProjectionRegistry;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -140,5 +140,5 @@
      */
     public static double[] getLengthAndDirection(ImageryOffset offset, double dx, double dy) {
-        Projection proj = Main.getProjection();
+        Projection proj = ProjectionRegistry.getProjection();
         EastNorth pos = proj.latlon2eastNorth(offset.getPosition());
         LatLon correctedCenterLL = proj.eastNorth2latlon(pos.add(-dx, -dy));
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetInfoAction.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetInfoAction.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/OffsetInfoAction.java	(revision 34466)
@@ -12,5 +12,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -47,12 +46,12 @@
         Object info = offset == null ? null : getInformationObject(offset);
         if (offset.isFlagged())
-            JOptionPane.showMessageDialog(Main.parent, info, ImageryOffsetTools.DIALOG_TITLE, JOptionPane.PLAIN_MESSAGE);
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), info, ImageryOffsetTools.DIALOG_TITLE, JOptionPane.PLAIN_MESSAGE);
         else {
-            int result = JOptionPane.showOptionDialog(Main.parent, info, ImageryOffsetTools.DIALOG_TITLE,
+            int result = JOptionPane.showOptionDialog(MainApplication.getMainFrame(), info, ImageryOffsetTools.DIALOG_TITLE,
                     JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
                     new String[] {"OK", tr("Report this offset")}, null);
             if (result == 1) {
                 // ask for a reason
-                Object reason = JOptionPane.showInputDialog(Main.parent,
+                Object reason = JOptionPane.showInputDialog(MainApplication.getMainFrame(),
                         tr("You are to notify moderators of this offset. Why?"),
                         ImageryOffsetTools.DIALOG_TITLE, JOptionPane.PLAIN_MESSAGE);
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/SimpleOffsetQueryTask.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/SimpleOffsetQueryTask.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/SimpleOffsetQueryTask.java	(revision 34466)
@@ -16,6 +16,7 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.spi.preferences.Config;
 
 /**
@@ -89,5 +90,5 @@
     private void doQuery(String query) throws UploadException, IOException {
         try {
-            String serverURL = Main.pref.get("iodb.server.url", "http://offsets.textual.ru/");
+            String serverURL = Config.getPref().get("iodb.server.url", "http://offsets.textual.ru/");
             URL url = new URL(serverURL + query);
             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
@@ -125,5 +126,5 @@
     protected void finish() {
         if (errorMessage != null) {
-            JOptionPane.showMessageDialog(Main.parent, errorMessage,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), errorMessage,
                     ImageryOffsetTools.DIALOG_TITLE, JOptionPane.ERROR_MESSAGE);
         } else if (listener != null) {
Index: applications/editors/josm/plugins/imagery_offset_db/src/iodb/StoreImageryOffsetAction.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/iodb/StoreImageryOffsetAction.java	(revision 34465)
+++ applications/editors/josm/plugins/imagery_offset_db/src/iodb/StoreImageryOffsetAction.java	(revision 34466)
@@ -13,5 +13,4 @@
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.UserIdentityManager;
@@ -60,5 +59,5 @@
         String userName = UserIdentityManager.getInstance().getUserName();
         if (userName == null || userName.length() == 0) {
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                     tr("To store imagery offsets you must be a registered OSM user."),
                     ImageryOffsetTools.DIALOG_TITLE, JOptionPane.ERROR_MESSAGE);
@@ -77,5 +76,5 @@
                         (selection instanceof Node && !((Node) selection).isReferredByWays(1)))) {
                     String[] options = new String[] {tr("Store calibration geometry"), tr("Store imagery offset")};
-                    int result = JOptionPane.showOptionDialog(Main.parent,
+                    int result = JOptionPane.showOptionDialog(MainApplication.getMainFrame(),
                             tr("The selected object can be used as a calibration geometry. What do you intend to do?"),
                             ImageryOffsetTools.DIALOG_TITLE, JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
@@ -95,5 +94,5 @@
             // register imagery offset
             if (Math.abs(layer.getDisplaySettings().getDx()) < 1e-8 && Math.abs(layer.getDisplaySettings().getDy()) < 1e-8) {
-                if (JOptionPane.showConfirmDialog(Main.parent,
+                if (JOptionPane.showConfirmDialog(MainApplication.getMainFrame(),
                         tr("The topmost imagery layer has no offset. Are you sure you want to upload this?"),
                         ImageryOffsetTools.DIALOG_TITLE, JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION)
@@ -146,5 +145,5 @@
         boolean ok = false;
         while (!ok) {
-            Object result = JOptionPane.showInputDialog(Main.parent, message,
+            Object result = JOptionPane.showInputDialog(MainApplication.getMainFrame(), message,
                     ImageryOffsetTools.DIALOG_TITLE, JOptionPane.PLAIN_MESSAGE, null, null, reason);
             if (result == null || result.toString().length() == 0) {
