diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
index 5a6d168e3a65cb86ab80ea6449f81f914da01f74..ddea8c8cd9daf4bcc306002e47056f28b3628c1f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
@@ -13,7 +13,7 @@ public class CSSHelper extends HelperBase {
 
     public CSSHelper() {}
 
-    public static final String THEME_CONFIG_FILE = "themes.config";
+    public static final String PROP_UNIVERSAL_THEMING = "routerconsole.theme.universal";
     public static final String PROP_THEME_NAME = "routerconsole.theme";
     public static final String DEFAULT_THEME = "light";
     public static final String BASE_THEME_PATH = "/themes/console/";
@@ -32,7 +32,7 @@ public class CSSHelper extends HelperBase {
             // This is the first thing to use _context on most pages
             if (_context == null)
                 throw new IllegalStateException("No contexts. This is usually because the router is either starting up or shutting down.");
-            String theme = _context.readConfigFile(THEME_CONFIG_FILE).getProperty(PROP_THEME_NAME, DEFAULT_THEME);
+            String theme = _context.getProperty(PROP_THEME_NAME, DEFAULT_THEME);
             url += theme + "/";
         }
         return url;
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
index 6599ffbeaf3c8cda980fb4f34bd21fb75ea32b50..6538315ffe26ebb0b9a36a2f9c5b2a4936f36a6e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
@@ -1,8 +1,5 @@
 package net.i2p.router.web;
 
-import java.util.Iterator;
-import java.util.Properties;
-
 /** set the theme */
 public class ConfigUIHandler extends FormHandler {
     private boolean _shouldSave;
@@ -27,21 +24,18 @@ public class ConfigUIHandler extends FormHandler {
     private void saveChanges() {
         if (_config == null)
             return;
-        Properties props = _context.readConfigFile(CSSHelper.THEME_CONFIG_FILE);
-        String oldTheme = props.getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME);
-        // Save routerconsole theme first to ensure it is in config file
+        String oldTheme = _context.getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME);
+        boolean ok;
         if (_config.equals("default")) // obsolete
-            props.put(CSSHelper.PROP_THEME_NAME, null);
+            ok = _context.router().saveConfig(CSSHelper.PROP_THEME_NAME, null);
         else
-            props.put(CSSHelper.PROP_THEME_NAME, _config);
-        if (_universalTheming) {
-            // The routerconsole theme gets set again, but oh well
-            for (Iterator it = props.keySet().iterator(); it.hasNext();) {
-                String key = (String) it.next();
-                props.put(key, _config);
-            }
+            ok = _context.router().saveConfig(CSSHelper.PROP_THEME_NAME, _config);
+        if (ok) {
+            if (_universalTheming)
+                ok = _context.router().saveConfig(CSSHelper.PROP_UNIVERSAL_THEMING, "true");
+            else
+                ok = _context.router().saveConfig(CSSHelper.PROP_UNIVERSAL_THEMING, null);
         }
-        boolean ok = _context.writeConfigFile(CSSHelper.THEME_CONFIG_FILE, props);
         if (ok) {
             if (!oldTheme.equals(_config))
                 addFormNotice(_("Theme change saved.") +
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
index fcb19bc38b9d4f09671b70198f57a8a1d536beac..990572ab489aacaf8fd214a602018d4cef450361 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
@@ -9,7 +9,7 @@ public class ConfigUIHelper extends HelperBase {
 
     public String getSettings() {
         StringBuilder buf = new StringBuilder(512);
-        String current = _context.readConfigFile(CSSHelper.THEME_CONFIG_FILE).getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME);
+        String current = _context.getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME);
         Set<String> themes = themeSet();
         for (String theme : themes) {
             buf.append("<input type=\"radio\" class=\"optbox\" name=\"theme\" ");
@@ -17,7 +17,11 @@ public class ConfigUIHelper extends HelperBase {
                 buf.append("checked=\"checked\" ");
             buf.append("value=\"").append(theme).append("\">").append(_(theme)).append("<br>\n");
         }
-        buf.append("<input type=\"checkbox\" name=\"universalTheming\" value=\"1\">")
+        boolean universalTheming = _context.getBooleanProperty(CSSHelper.PROP_UNIVERSAL_THEMING);
+        buf.append("<input type=\"checkbox\" name=\"universalTheming\" ");
+        if (universalTheming)
+            buf.append("checked=\"checked\" ");
+        buf.append("value=\"1\">")
            .append(_("Set theme universally across all apps"))
            .append("<br>\n");
         return buf.toString();