Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 7804)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 7805)
@@ -667,6 +667,9 @@
             switch (type) {
             case SVG:
-                URI uri = getSvgUniverse().loadSVG(is, Utils.fileToURL(cf.getFile()).toString());
-                SVGDiagram svg = getSvgUniverse().getDiagram(uri);
+                SVGDiagram svg = null;
+                synchronized (getSvgUniverse()) {
+                    URI uri = getSvgUniverse().loadSVG(is, Utils.fileToURL(cf.getFile()).toString());
+                    svg = getSvgUniverse().getDiagram(uri);
+                }
                 return svg == null ? null : new ImageResource(svg);
             case OTHER:
@@ -706,6 +709,9 @@
                 if ("image/svg+xml".equals(mediatype)) {
                     String s = new String(bytes, StandardCharsets.UTF_8);
-                    URI uri = getSvgUniverse().loadSVG(new StringReader(s), URLEncoder.encode(s, "UTF-8"));
-                    SVGDiagram svg = getSvgUniverse().getDiagram(uri);
+                    SVGDiagram svg = null;
+                    synchronized (getSvgUniverse()) {
+                        URI uri = getSvgUniverse().loadSVG(new StringReader(s), URLEncoder.encode(s, "UTF-8"));
+                        svg = getSvgUniverse().getDiagram(uri);
+                    }
                     if (svg == null) {
                         Main.warn("Unable to process svg: "+s);
@@ -777,6 +783,9 @@
                     switch (type) {
                     case SVG:
-                        URI uri = getSvgUniverse().loadSVG(is, entryName);
-                        SVGDiagram svg = getSvgUniverse().getDiagram(uri);
+                        SVGDiagram svg = null;
+                        synchronized (getSvgUniverse()) {
+                            URI uri = getSvgUniverse().loadSVG(is, entryName);
+                            svg = getSvgUniverse().getDiagram(uri);
+                        }
                         return svg == null ? null : new ImageResource(svg);
                     case OTHER:
@@ -808,6 +817,9 @@
         switch (type) {
         case SVG:
-            URI uri = getSvgUniverse().loadSVG(path);
-            SVGDiagram svg = getSvgUniverse().getDiagram(uri);
+            SVGDiagram svg = null;
+            synchronized (getSvgUniverse()) {
+                URI uri = getSvgUniverse().loadSVG(path);
+                svg = getSvgUniverse().getDiagram(uri);
+            }
             return svg == null ? null : new ImageResource(svg);
         case OTHER:
