diff --git a/src/main/java/org/jabref/gui/util/ThemeLoader.java b/src/main/java/org/jabref/gui/util/ThemeLoader.java
index 7a7004d3445..e9d9a7b40e8 100644
--- a/src/main/java/org/jabref/gui/util/ThemeLoader.java
+++ b/src/main/java/org/jabref/gui/util/ThemeLoader.java
@@ -36,7 +36,8 @@
  */
 public class ThemeLoader {
 
-    private static final String DEFAULT_PATH_MAIN_CSS = JabRefFrame.class.getResource("Base.css").toExternalForm();
+    public static final String DEFAULT_MAIN_CSS = "Base.css";
+    private static final String DEFAULT_PATH_MAIN_CSS = JabRefFrame.class.getResource(DEFAULT_MAIN_CSS).toExternalForm();
     private static final Logger LOGGER = LoggerFactory.getLogger(ThemeLoader.class);
     private String cssProperty = System.getProperty("jabref.theme.css");
     private final FileUpdateMonitor fileUpdateMonitor;
@@ -57,25 +58,31 @@ public ThemeLoader(FileUpdateMonitor fileUpdateMonitor, JabRefPreferences jabRef
         }
     }
 
+
     /**
      * Installs the base css file as a stylesheet in the given scene.
      * Changes in the css file lead to a redraw of the scene using the new css file.
      */
     public void installBaseCss(Scene scene, JabRefPreferences preferences) {
-        addAndWatchForChanges(scene, DEFAULT_PATH_MAIN_CSS, 0);
-
         if (StringUtil.isNotBlank(cssProperty)) {
             final Path path = Paths.get(cssProperty);
             if (Files.isReadable(path)) {
                 String cssUrl = path.toUri().toString();
-                addAndWatchForChanges(scene, cssUrl, 1);
+                addAndWatchForChanges(scene, cssUrl, 0);
+            } else {
+                LOGGER.warn(path.toAbsolutePath() + " is not readable");
             }
+        } else {
+            addAndWatchForChanges(scene, DEFAULT_PATH_MAIN_CSS, 0);
         }
 
         preferences.getFontSize().ifPresent(size -> scene.getRoot().setStyle("-fx-font-size: " + size + "pt;"));
     }
 
     private void addAndWatchForChanges(Scene scene, String cssUrl, int index) {
+        // avoid repeat add
+        if (scene.getStylesheets().contains(cssUrl)) return;
+
         scene.getStylesheets().add(index, cssUrl);
 
         try {
@@ -86,7 +93,6 @@ private void addAndWatchForChanges(Scene scene, String cssUrl, int index) {
                 LOGGER.info("Enabling live reloading of " + cssFile);
                 fileUpdateMonitor.addListenerForFile(cssFile, () -> {
                     LOGGER.info("Reload css file " + cssFile);
-
                     DefaultTaskExecutor.runInJavaFXThread(() -> {
                                 scene.getStylesheets().remove(cssUrl);
                                 scene.getStylesheets().add(index, cssUrl);
diff --git a/src/main/java/org/jabref/preferences/JabRefPreferences.java b/src/main/java/org/jabref/preferences/JabRefPreferences.java
index 45f724fc252..79d0afc5a5f 100644
--- a/src/main/java/org/jabref/preferences/JabRefPreferences.java
+++ b/src/main/java/org/jabref/preferences/JabRefPreferences.java
@@ -51,6 +51,7 @@
 import org.jabref.gui.maintable.ColumnPreferences;
 import org.jabref.gui.maintable.MainTablePreferences;
 import org.jabref.gui.preferences.ImportSettingsTab;
+import org.jabref.gui.util.ThemeLoader;
 import org.jabref.logic.bibtex.FieldContentParserPreferences;
 import org.jabref.logic.bibtex.LatexFieldFormatterPreferences;
 import org.jabref.logic.bibtexkeypattern.BibtexKeyPatternPreferences;
@@ -780,6 +781,8 @@ private JabRefPreferences() {
                                     + "\\begin{comment}
Comment:  \\format[HTMLChars]{\\comment} \\end{comment}"
                                     + "__NEWLINE__