Index: /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 5675)
+++ /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 5676)
@@ -794,5 +794,5 @@
 
     @Override
-    protected final void keysChangedImpl(Map<String, String> originalKeys) {
+    protected void keysChangedImpl(Map<String, String> originalKeys) {
         clearCachedStyle();
         if (dataSet != null) {
Index: /trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 5675)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 5676)
@@ -7,4 +7,5 @@
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
@@ -530,3 +531,14 @@
         return ret;
     }
+
+    @Override
+    protected void keysChangedImpl(Map<String, String> originalKeys) {
+        super.keysChangedImpl(originalKeys);
+        // fix #8346 - Clear style cache for multipolygon members after a tag change
+        if (isMultipolygon()) {
+            for (OsmPrimitive member : getMemberPrimitives()) {
+                member.clearCachedStyle();
+            }
+        }
+    }
 }
