Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 9694)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 9695)
@@ -564,8 +564,20 @@
 
     @Override
+    public void setModified(boolean modified) {
+        boolean locked = writeLock();
+        try {
+            super.setModified(modified);
+            clearCachedStyle();
+        } finally {
+            writeUnlock(locked);
+        }
+    }
+
+    @Override
     public void setVisible(boolean visible) {
         boolean locked = writeLock();
         try {
             super.setVisible(visible);
+            clearCachedStyle();
         } finally {
             writeUnlock(locked);
@@ -585,4 +597,5 @@
                 }
             }
+            clearCachedStyle();
         } finally {
             writeUnlock(locked);
@@ -607,4 +620,9 @@
     }
 
+    /**
+     * Determines whether the primitive is selected
+     * @return whether the primitive is selected
+     * @see DataSet#isSelected(OsmPrimitive)
+     */
     public boolean isSelected() {
         return dataSet != null && dataSet.isSelected(this);
