diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/IDatePicker.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/IDatePicker.java
index cc5187aff..45df18318 100644
--- a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/IDatePicker.java
+++ b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/IDatePicker.java
@@ -6,6 +6,9 @@ import java.util.function.Consumer;
 
 import javax.swing.JComponent;
 
+import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryProperties;
+import org.openstreetmap.josm.tools.Logging;
+
 /**
  * @author Taylor Smock
  */
@@ -19,4 +22,21 @@ public interface IDatePicker<T extends JComponent> {
   void reset();
 
   void addEventHandler(Consumer<IDatePicker<?>> function);
+
+  public static IDatePicker<? extends JComponent> getNewDatePicker() {
+    boolean fx = false;
+    boolean useFx = MapillaryProperties.JAVA_FX.get();
+    if (useFx) {
+      try {
+        new DatePickerFx();
+        fx = true;
+      } catch (UnsupportedClassVersionError e) {
+        Logging.error(e);
+      }
+    }
+    if (fx) {
+      return new DatePickerFx();
+    }
+    return new DatePickerSwing();
+  }
 }
diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java
index 196ecc9c1..680e6d91d 100644
--- a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java
+++ b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java
@@ -50,7 +50,6 @@ import org.openstreetmap.josm.plugins.mapillary.oauth.MapillaryLoginListener;
 import org.openstreetmap.josm.plugins.mapillary.oauth.MapillaryUser;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Logging;
 
 /**
  * ToggleDialog that lets you filter the images that are being shown.
@@ -119,15 +118,8 @@ public final class MapillaryFilterDialog extends ToggleDialog implements Mapilla
     fromPanel.add(this.time);
 
     JPanel timePanel;
-    try {
-      startDate = new DatePickerFx();
-      endDate = new DatePickerFx();
-    } catch (UnsupportedClassVersionError e) {
-      // Don't kill the plugin if JavaFX cannot be loaded
-      Logging.error(e);
-      startDate = new DatePickerSwing();
-      endDate = new DatePickerSwing();
-    }
+    startDate = IDatePicker.getNewDatePicker();
+    endDate = IDatePicker.getNewDatePicker();
     Consumer<IDatePicker<?>> function = this::updateDates;
     startDate.addEventHandler(function);
     endDate.addEventHandler(function);
diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java
index 14ab11af1..8b88af105 100644
--- a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java
+++ b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java
@@ -101,6 +101,8 @@ public class MapillaryPreferenceSetting implements SubPreferenceSetting, Mapilla
   private final JLabel loginLabel = new JLabel();
   private final JPanel loginPanel = new JPanel();
 
+  private JCheckBox javaFx;
+
   @Override
   public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) {
     return gui.getDisplayPreference();
@@ -169,12 +171,18 @@ public class MapillaryPreferenceSetting implements SubPreferenceSetting, Mapilla
     requiresLogin.add(new JSeparator(), GBC.eol().fill(GBC.HORIZONTAL));
     mainPanel.add(requiresLogin, GBC.eol().fill(GBC.HORIZONTAL));
 
+    javaFx = new JCheckBox(I18n.tr("Use JavaFX for better looking dialogs"));
+    javaFx.setToolTipText(I18n.tr("Enable/disable JavaFX (requires restart). Using JavaFX may cause a smaller window issue, or a whited-out sidebar."));
+    javaFx.setSelected(MapillaryProperties.JAVA_FX.get());
+    mainPanel.add(new JSeparator(), GBC.eol().fill(GBC.HORIZONTAL));
+    mainPanel.add(javaFx, GBC.eol());
+
     if (ExpertToggleAction.isExpert() || developer.isSelected()) {
       mainPanel.add(developer, GBC.eol());
     }
     MapillaryColorScheme.styleAsDefaultPanel(
       mainPanel, downloadModePanel, displayHour, format24, moveTo, hoverEnabled, darkMode, cutOffSeq,
-      imageLinkToBlurEditor, developer, preFetchPanel, requiresLogin
+      imageLinkToBlurEditor, developer, preFetchPanel, requiresLogin, javaFx
       );
     mainPanel.add(Box.createVerticalGlue(), GBC.eol().fill(GridBagConstraints.BOTH));
 
@@ -236,8 +244,8 @@ public class MapillaryPreferenceSetting implements SubPreferenceSetting, Mapilla
     MapillaryProperties.PRE_FETCH_IMAGE_COUNT.put(preFetchSize.getNumber().intValue());
     MapillaryProperties.IMAGE_MODE.put(((PRIVATE_IMAGE_DOWNLOAD_MODE) privateImages.getSelectedItem()).getPrefId());
 
-    //Restart is never required
-    return false;
+    //Restart is never required, except when JavaFX is switched on/off
+    return MapillaryProperties.JAVA_FX.put(javaFx.isSelected());
   }
 
   @Override
diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/MapillaryExpertFilterDialog.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/MapillaryExpertFilterDialog.java
index de6c0f09b..8a22e88db 100644
--- a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/MapillaryExpertFilterDialog.java
+++ b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/MapillaryExpertFilterDialog.java
@@ -519,4 +519,4 @@ public class MapillaryExpertFilterDialog extends ToggleDialog implements DataSet
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/TrafficSignFilter.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/TrafficSignFilter.java
index 3cf31dfdd..e8f17865e 100644
--- a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/TrafficSignFilter.java
+++ b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/dialog/TrafficSignFilter.java
@@ -39,8 +39,6 @@ import org.apache.commons.io.IOUtils;
 import org.openstreetmap.josm.data.osm.Filter;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.FilterField;
-import org.openstreetmap.josm.plugins.mapillary.gui.DatePickerFx;
-import org.openstreetmap.josm.plugins.mapillary.gui.DatePickerSwing;
 import org.openstreetmap.josm.plugins.mapillary.gui.IDatePicker;
 import org.openstreetmap.josm.plugins.mapillary.gui.ImageCheckBoxButton;
 import org.openstreetmap.josm.tools.Destroyable;
@@ -194,22 +192,8 @@ public class TrafficSignFilter extends JPanel implements Destroyable {
       lastSeen.add(new JLabel(I18n.tr("Last Seen End")), GBC.eol());
     }
 
-    boolean fx = false;
-    try {
-      new DatePickerFx();
-      fx = true;
-    } catch (UnsupportedClassVersionError e) {
-      Logging.error(e);
-    }
-    final IDatePicker<?> firstSeenPicker;
-    final IDatePicker<?> lastSeenPicker;
-    if (fx) {
-      firstSeenPicker = new DatePickerFx();
-      lastSeenPicker = new DatePickerFx();
-    } else {
-      firstSeenPicker = new DatePickerSwing();
-      lastSeenPicker = new DatePickerSwing();
-    }
+    final IDatePicker<?> firstSeenPicker = IDatePicker.getNewDatePicker();
+    final IDatePicker<?> lastSeenPicker = IDatePicker.getNewDatePicker();
     firstSeen.add(firstSeenPicker.getComponent(), GBC.eol());
     lastSeen.add(lastSeenPicker.getComponent(), GBC.eol());
     firstSeenPicker.addEventHandler(t -> updateDates(firstLast, firstSeenPicker, firstSeenPicker, lastSeenPicker));
diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryProperties.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryProperties.java
index 376571157..bf5801f76 100644
--- a/src/main/java/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryProperties.java
+++ b/src/main/java/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryProperties.java
@@ -87,6 +87,11 @@ public final class MapillaryProperties {
    */
   public static final DoubleProperty UNSELECTED_OPACITY = new DoubleProperty("mapillary.unselectedimageopacity", 0.50);
 
+  /**
+   * Whether or not to try to use JavaFX
+   */
+  public static final BooleanProperty JAVA_FX = new BooleanProperty("mapillary.javafx", true);
+
   private MapillaryProperties() {
     // Private constructor to avoid instantiation
   }
