Index: trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 12540)
+++ trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 12541)
@@ -993,5 +993,5 @@
                 drawImageInside(g, img, anchorImage, anchorScreen, null);
             }
-            if (tile instanceof ReprojectionTile) {
+            if (tile instanceof ReprojectionTile && ((ReprojectionTile) tile).needsUpdate(Main.map.mapView.getScale())) {
                 // This means we have a reprojected tile in memory cache, but not at
                 // current scale. Generally, the positioning of the tile will still
@@ -999,8 +999,6 @@
                 // reprojected to the target scale. The original tile image should
                 // still be in disk cache, so this is fairly cheap.
-                if (((ReprojectionTile) tile).needsUpdate(Main.map.mapView.getScale())) {
-                    ((ReprojectionTile) tile).invalidate();
-                    loadTile(tile, false);
-                }
+                ((ReprojectionTile) tile).invalidate();
+                loadTile(tile, false);
             }
 
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 12540)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 12541)
@@ -265,9 +265,8 @@
             @Override
             public void visit(Way w) {
-                if (e.child == null && left.matches(new Environment(w).withParent(e.osm))) {
-                    if (e.osm instanceof Way && Geometry.PolygonIntersection.CROSSING.equals(
+                if (e.child == null && left.matches(new Environment(w).withParent(e.osm))
+                    && e.osm instanceof Way && Geometry.PolygonIntersection.CROSSING.equals(
                             Geometry.polygonIntersection(w.getNodes(), ((Way) e.osm).getNodes()))) {
-                        e.child = w;
-                    }
+                    e.child = w;
                 }
             }
@@ -282,10 +281,9 @@
             @Override
             public void visit(Node n) {
-                if (e.child == null && left.matches(new Environment(n).withParent(e.osm))) {
-                    if ((e.osm instanceof Way && Geometry.nodeInsidePolygon(n, ((Way) e.osm).getNodes()))
+                if (e.child == null && left.matches(new Environment(n).withParent(e.osm))
+                    && (e.osm instanceof Way && Geometry.nodeInsidePolygon(n, ((Way) e.osm).getNodes()))
                             || (e.osm instanceof Relation && (
                                     (Relation) e.osm).isMultipolygon() && Geometry.isNodeInsideMultiPolygon(n, (Relation) e.osm, null))) {
-                        e.child = n;
-                    }
+                    e.child = n;
                 }
             }
@@ -293,12 +291,11 @@
             @Override
             public void visit(Way w) {
-                if (e.child == null && left.matches(new Environment(w).withParent(e.osm))) {
-                    if ((e.osm instanceof Way && Geometry.PolygonIntersection.FIRST_INSIDE_SECOND.equals(
+                if (e.child == null && left.matches(new Environment(w).withParent(e.osm))
+                    && (e.osm instanceof Way && Geometry.PolygonIntersection.FIRST_INSIDE_SECOND.equals(
                             Geometry.polygonIntersection(w.getNodes(), ((Way) e.osm).getNodes())))
                             || (e.osm instanceof Relation && (
                                     (Relation) e.osm).isMultipolygon()
                                     && Geometry.isPolygonInsideMultiPolygon(w.getNodes(), (Relation) e.osm, null))) {
-                        e.child = w;
-                    }
+                    e.child = w;
                 }
             }
@@ -400,11 +397,10 @@
                     for (int i = 0; i < wayNodes.size(); i++) {
                         Node n = wayNodes.get(i);
-                        if (left.matches(e.withPrimitive(n))) {
-                            if (link.matches(e.withChildAndIndexAndLinkContext(n, i, wayNodes.size()))) {
-                                e.child = n;
-                                e.index = i;
-                                e.count = wayNodes.size();
-                                return true;
-                            }
+                        if (left.matches(e.withPrimitive(n))
+                            && link.matches(e.withChildAndIndexAndLinkContext(n, i, wayNodes.size()))) {
+                            e.child = n;
+                            e.index = i;
+                            e.count = wayNodes.size();
+                            return true;
                         }
                     }
@@ -413,11 +409,10 @@
                     for (int i = 0; i < members.size(); i++) {
                         OsmPrimitive member = members.get(i).getMember();
-                        if (left.matches(e.withPrimitive(member))) {
-                            if (link.matches(e.withChildAndIndexAndLinkContext(member, i, members.size()))) {
-                                e.child = member;
-                                e.index = i;
-                                e.count = members.size();
-                                return true;
-                            }
+                        if (left.matches(e.withPrimitive(member))
+                            && link.matches(e.withChildAndIndexAndLinkContext(member, i, members.size()))) {
+                            e.child = member;
+                            e.index = i;
+                            e.count = members.size();
+                            return true;
                         }
                     }
