Index: /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 7621)
@@ -590,4 +590,8 @@
     }
 
+    /**
+     * Determines if this primitive is a member of a selected relation.
+     * @return {@code true} if this primitive is a member of a selected relation, {@code false} otherwise
+     */
     public boolean isMemberOfSelected() {
         if (referrers == null)
@@ -598,4 +602,33 @@
             if (ref instanceof Relation && ref.isSelected())
                 return true;
+        }
+        return false;
+    }
+
+    /**
+     * Determines if this primitive is an outer member of a selected multipolygon relation.
+     * @return {@code true} if this primitive is an outer member of a selected multipolygon relation, {@code false} otherwise
+     * @since 7621
+     */
+    public boolean isOuterMemberOfSelected() {
+        if (referrers == null)
+            return false;
+        if (referrers instanceof OsmPrimitive) {
+            return isOuterMemberOfMultipolygon((OsmPrimitive) referrers);
+        }
+        for (OsmPrimitive ref : (OsmPrimitive[]) referrers) {
+            if (isOuterMemberOfMultipolygon(ref))
+                return true;
+        }
+        return false;
+    }
+
+    private boolean isOuterMemberOfMultipolygon(OsmPrimitive ref) {
+        if (ref instanceof Relation && ref.isSelected() && ((Relation)ref).isMultipolygon()) {
+            for (RelationMember rm : ((Relation)ref).getMembersFor(Collections.singleton(this))) {
+                if ("outer".equals(rm.getRole())) {
+                    return true;
+                }
+            }
         }
         return false;
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 7621)
@@ -291,4 +291,5 @@
     private static final int FLAG_MEMBER_OF_SELECTED = 2;
     private static final int FLAG_SELECTED = 4;
+    private static final int FLAG_OUTERMEMBER_OF_SELECTED = 8;
 
     private static final double PHI = Math.toRadians(20);
@@ -1514,4 +1515,6 @@
             } else if (w.isSelected()) {
                 add(w, FLAG_SELECTED);
+            } else if (w.isOuterMemberOfSelected()) {
+                add(w, FLAG_OUTERMEMBER_OF_SELECTED);
             } else if (w.isMemberOfSelected()) {
                 add(w, FLAG_MEMBER_OF_SELECTED);
@@ -1527,4 +1530,6 @@
             } else if (r.isSelected()) {
                 add(r, FLAG_SELECTED);
+            } else if (r.isOuterMemberOfSelected()) {
+                add(r, FLAG_OUTERMEMBER_OF_SELECTED);
             } else if (r.isMemberOfSelected()) {
                 add(r, FLAG_MEMBER_OF_SELECTED);
@@ -1654,4 +1659,5 @@
                         StyledMapRenderer.this,
                         (r.flags & FLAG_SELECTED) != 0,
+                        (r.flags & FLAG_OUTERMEMBER_OF_SELECTED) != 0,
                         (r.flags & FLAG_MEMBER_OF_SELECTED) != 0
                 );
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java	(revision 7621)
@@ -86,5 +86,6 @@
 
     @Override
-    public void paintPrimitive(OsmPrimitive osm, MapPaintSettings paintSettings, StyledMapRenderer painter, boolean selected, boolean member) {
+    public void paintPrimitive(OsmPrimitive osm, MapPaintSettings paintSettings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member) {
         Color myColor = color;
         if (osm instanceof Way) {
@@ -92,5 +93,5 @@
                 if (selected) {
                     myColor = paintSettings.getSelectedColor(color.getAlpha());
-                } else if (member) {
+                } else if (outermember) {
                     myColor = paintSettings.getRelationSelectedColor(color.getAlpha());
                 }
@@ -98,5 +99,5 @@
             painter.drawArea((Way) osm, myColor, fillImage, text);
         } else if (osm instanceof Relation) {
-            if (color != null && (selected || (member && ((Relation) osm).isMultipolygon()))) {
+            if (color != null && (selected || outermember)) {
                 myColor = paintSettings.getRelationSelectedColor(color.getAlpha());
             }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java	(revision 7621)
@@ -179,5 +179,6 @@
 
     @Override
-    public void paintPrimitive(OsmPrimitive osm, MapPaintSettings settings, StyledMapRenderer painter, boolean selected, boolean member) {
+    public void paintPrimitive(OsmPrimitive osm, MapPaintSettings settings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member) {
         if (osm instanceof Node) {
             painter.drawBoxText((Node) osm, this);
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java	(revision 7621)
@@ -43,7 +43,9 @@
      * @param painter
      * @param selected true, if primitive is selected
+     * @param outermember true, if primitive is not selected and outer member of a selected multipolygon relation
      * @param member true, if primitive is not selected and member of a selected relation
      */
-    public abstract void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter, boolean selected, boolean member);
+    public abstract void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member);
 
     public boolean isProperLineStyle() {
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 7621)
@@ -264,5 +264,6 @@
 
     @Override
-    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter, boolean selected, boolean member) {
+    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member) {
         Way w = (Way)primitive;
         /* show direction arrows, if draw.segment.relevant_directions_only is not set,
@@ -297,5 +298,5 @@
         if (selected) {
             myColor = paintSettings.getSelectedColor(color.getAlpha());
-        } else if (member) {
+        } else if (member || outermember) {
             myColor = paintSettings.getRelationSelectedColor(color.getAlpha());
         } else if(w.isDisabled()) {
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java	(revision 7621)
@@ -32,5 +32,6 @@
 
     @Override
-    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter, boolean selected, boolean member) {
+    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member) {
         Way w = (Way)primitive;
         painter.drawTextOnPath(w, text);
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java	(revision 7621)
@@ -241,5 +241,6 @@
 
     @Override
-    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings settings, StyledMapRenderer painter, boolean selected, boolean member) {
+    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings settings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member) {
         if (primitive instanceof Node) {
             Node n = (Node) primitive;
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java	(revision 7620)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java	(revision 7621)
@@ -50,5 +50,6 @@
 
     @Override
-    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter, boolean selected, boolean member) {
+    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member) {
         Way w = (Way) primitive;
         painter.drawRepeatImage(w, pattern.getImage(), offset, spacing, phase, align);
