Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/SimplePaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/SimplePaintVisitor.java	(revision 3125)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/SimplePaintVisitor.java	(revision 3126)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.osm.BBox;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -121,4 +122,5 @@
     DataSet ds;
     public void visitAll(DataSet data, boolean virtual, Bounds bounds) {
+        BBox bbox = new BBox(bounds);
         this.ds = data;
         //boolean profiler = Main.pref.getBoolean("simplepaint.profiler",false);
@@ -141,5 +143,5 @@
            require changing the colour while painting... */
         //profilerN = 0;
-        for (final OsmPrimitive osm: data.getRelations()) {
+        for (final OsmPrimitive osm: data.searchRelations(bbox)) {
             if (!osm.isDeleted() && !ds.isSelected(osm) && !osm.isFiltered()) {
                 osm.visit(this);
@@ -155,5 +157,5 @@
 
         //profilerN = 0;
-        for (final OsmPrimitive osm:data.getWays()){
+        for (final OsmPrimitive osm:data.searchWays(bbox)){
             if (!osm.isDeleted() && !ds.isSelected(osm) && !osm.isFiltered() && osm.isTagged()) {
                 osm.visit(this);
@@ -163,5 +165,5 @@
         displaySegments();
 
-        for (final OsmPrimitive osm:data.getWays()){
+        for (final OsmPrimitive osm:data.searchWays(bbox)){
             if (!osm.isDeleted() && !ds.isSelected(osm) && !osm.isFiltered() && !osm.isTagged()) {
                 osm.visit(this);
@@ -193,5 +195,5 @@
 
         //profilerN = 0;
-        for (final OsmPrimitive osm: data.getNodes()) {
+        for (final OsmPrimitive osm: data.searchNodes(bbox)) {
             if (!osm.isDeleted() && !ds.isSelected(osm) && !osm.isFiltered())
             {
@@ -208,5 +210,5 @@
         //}
 
-        drawVirtualNodes(data.getWays());
+        drawVirtualNodes(data.searchWays(bbox));
 
         //if(profiler)
