Index: trunk/src/org/openstreetmap/josm/gui/bbox/SizeButton.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/bbox/SizeButton.java	(revision 4335)
+++ trunk/src/org/openstreetmap/josm/gui/bbox/SizeButton.java	(revision 4336)
@@ -26,9 +26,9 @@
     }
 
-    public void paint(Graphics g){
-        if(isEnlarged){
+    public void paint(Graphics g) {
+        if(isEnlarged) {
             if(shrinkImage != null)
                 g.drawImage(shrinkImage.getImage(),x,y, null);
-        }else{
+        } else {
             if(enlargeImage != null)
                 g.drawImage(enlargeImage.getImage(),x,y, null);
@@ -36,11 +36,15 @@
     }
 
-    public void toggle(){
+    public void toggle() {
         isEnlarged = !isEnlarged;
     }
 
-    public boolean hit(Point point){
-        if(x < point.x && point.x < x + enlargeImage.getIconWidth()){
-            if(y < point.y && point.y < y + enlargeImage.getIconHeight() ){
+    public boolean isEnlarged() {
+        return isEnlarged;
+    }
+
+    public boolean hit(Point point) {
+        if(x < point.x && point.x < x + enlargeImage.getIconWidth()) {
+            if(y < point.y && point.y < y + enlargeImage.getIconHeight()) {
                 return true;
             }
Index: trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 4335)
+++ trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 4336)
@@ -10,5 +10,4 @@
 import java.awt.Point;
 import java.awt.Rectangle;
-import java.awt.Toolkit;
 import java.io.File;
 import java.io.IOException;
@@ -40,5 +39,4 @@
 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
 import org.openstreetmap.josm.data.preferences.StringProperty;
-import org.openstreetmap.josm.gui.download.DownloadDialog;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 
@@ -153,7 +151,5 @@
 
     private static final StringProperty PROP_MAPSTYLE = new StringProperty("slippy_map_chooser.mapstyle", "Mapnik");
-
-    // standard dimension
-    private Dimension iDownloadDialogDimension;
+    public static final String RESIZE_PROP = SlippyMapBBoxChooser.class.getName() + ".resize";
 
     private TileLoader cachedLoader;
@@ -341,12 +337,6 @@
         Bounds oldValue = this.bbox;
         this.bbox = b;
+        repaint();
         firePropertyChange(BBOX_PROP, oldValue, this.bbox);
-        repaint();
-    }
-
-    private DownloadDialog iGui;
-
-    public void setGui(final DownloadDialog gui) {
-        iGui = gui;
     }
 
@@ -356,27 +346,6 @@
      */
     public void resizeSlippyMap() {
-        int w, h;
-
-        // retrieve the size of the display
-        Dimension iScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
-
-        // enlarge
-        if(iDownloadDialogDimension == null) {
-            // make the each dimension 90% of the absolute display size
-            w = iScreenSize.width * 90 / 100;
-            h = iScreenSize.height * 90 / 100;
-            iDownloadDialogDimension = iGui.getSize(); 
-        }
-        // shrink
-        else {
-            // set the size back to the initial dimensions
-            w = iDownloadDialogDimension.width;
-            h = iDownloadDialogDimension.height;
-            iDownloadDialogDimension = null;
-        }
-
-        // resize and center the DownloadDialog 
-        iGui.setBounds((iScreenSize.width - w) / 2, (iScreenSize.height - h) / 2, w, h); 
-        repaint();
+        boolean large = iSizeButton.isEnlarged();
+        firePropertyChange(RESIZE_PROP, !large, large);
     }
 
@@ -398,13 +367,14 @@
      */
     public void setBoundingBox(Bounds bbox) {
-        if (bbox == null) {
+        if (bbox == null || (bbox.getMin().lat() == 0.0 && bbox.getMin().lon() == 0.0
+        && bbox.getMax().lat() == 0.0 && bbox.getMax().lon() == 0.0)) {
             this.bbox = null;
+            iSelectionRectStart = null;
+            iSelectionRectEnd = null;
+            repaint();
             return;
         }
-        // test if a bounding box has been set
-        if (bbox.getMin().lat() == 0.0 && bbox.getMin().lon() == 0.0 && bbox.getMax().lat() == 0.0 && bbox.getMax().lon() == 0.0) {
-            this.bbox = null;
-        }
-
+
+        this.bbox = bbox;
         int y1 = OsmMercator.LatToY(bbox.getMin().lat(), MAX_ZOOM);
         int y2 = OsmMercator.LatToY(bbox.getMax().lat(), MAX_ZOOM);
@@ -425,5 +395,4 @@
         setDisplayToFitMapMarkers();
         zoomOut();
-        this.bbox = bbox;
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java	(revision 4335)
+++ trunk/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java	(revision 4336)
@@ -4,4 +4,8 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Toolkit;
 
 import java.beans.PropertyChangeEvent;
@@ -24,4 +28,6 @@
     private DownloadDialog iGui;
     private SlippyMapBBoxChooser pnlSlippyMapBBoxChooser;
+    // standard dimension
+    private Dimension iDownloadDialogDimension;
 
     /**
@@ -35,5 +41,4 @@
     public void addGui(final DownloadDialog gui) {
         iGui = gui;
-        pnlSlippyMapBBoxChooser.setGui(iGui);
         iGui.addDownloadAreaSelector(pnlSlippyMapBBoxChooser, tr("Slippy map"));
     }
@@ -41,4 +46,5 @@
     public void setDownloadArea(Bounds area) {
         pnlSlippyMapBBoxChooser.setBoundingBox(area);
+        repaint();
     }
 
@@ -48,4 +54,28 @@
                 iGui.boundingBoxChanged((Bounds)evt.getNewValue(), this);
             }
+        } else if(evt.getPropertyName().equals(SlippyMapBBoxChooser.RESIZE_PROP)) {
+            int w, h;
+
+            // retrieve the size of the display
+            Dimension iScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
+
+            // enlarge
+            if(iDownloadDialogDimension == null) {
+                // make the each dimension 90% of the absolute display size
+                w = iScreenSize.width * 90 / 100;
+                h = iScreenSize.height * 90 / 100;
+                iDownloadDialogDimension = iGui.getSize(); 
+            }
+            // shrink
+            else {
+                // set the size back to the initial dimensions
+                w = iDownloadDialogDimension.width;
+                h = iDownloadDialogDimension.height;
+                iDownloadDialogDimension = null;
+            }
+
+            // resize and center the DownloadDialog 
+            iGui.setBounds((iScreenSize.width - w) / 2, (iScreenSize.height - h) / 2, w, h); 
+            repaint();
         }
     }
