Index: FFrameOverView.java
===================================================================
--- FFrameOverView.java	(revision 43)
+++ FFrameOverView.java	(revision 44)
@@ -23,9 +23,10 @@
 
 import java.awt.Color;
 import java.awt.Dimension;
+import java.awt.Graphics;
 import java.awt.Graphics2D;
+import java.awt.Image;
 import java.awt.geom.AffineTransform;
-import java.awt.geom.Line2D;
 import java.awt.geom.Rectangle2D;
 import java.awt.image.BufferedImage;
 
@@ -96,39 +97,80 @@
                 extent = vpOrig.getAdjustedEnvelope();
             }
             vp.refreshExtent();
+            
+            Image ov_img = new BufferedImage(
+                vp.getImageWidth(),
+                vp.getImageHeight(),
+                BufferedImage.TYPE_INT_ARGB);
+            Graphics ov_img_gra = ov_img.getGraphics();
+            
+            /*
+             * Fill with transparent color
+             */
+            ov_img_gra.setColor(new Color(0, 0, 0, 0));
+            ov_img_gra.fillRect(0, 0,
+                vp.getImageWidth(), vp.getImageHeight());
+            
+            
             Rectangle2D aux =
                 new Rectangle2D.Double(extent.getMinimum(0),
                     extent.getMinimum(1), extent.getLength(0),
                     extent.getLength(1));
             Rectangle2D extentPixels = vp.fromMapRectangle(aux);
 
-            extentPixels.setFrame(extentPixels.getX(), extentPixels.getY(),
+            /*
+             * Area of interest in pixels, inside ov_img image
+             */
+            extentPixels.setFrame(
+                extentPixels.getMinX(), extentPixels.getMinY(),
                 extentPixels.getWidth(), extentPixels.getHeight());
+
+            /*
+             * Fill (gray) and perimeter (red)
+             */
+            ov_img_gra.setColor(new Color(100, 100, 100, 100));
+            ov_img_gra.fillRect((int) extentPixels.getMinX(),
+                (int) extentPixels.getMinY(),
+                (int) extentPixels.getWidth(),
+                (int) extentPixels.getHeight());
+            ov_img_gra.setColor(Color.red);
+            ov_img_gra.drawRect((int) extentPixels.getMinX(),
+                (int) extentPixels.getMinY(),
+                (int) extentPixels.getWidth(),
+                (int) extentPixels.getHeight());
+            
+            /*
+             * Draw vertical, horizontal lines
+             */
+            ov_img_gra.setColor(Color.darkGray);
+            int cx = (int) extentPixels.getCenterX(); 
+            int cy = (int) extentPixels.getCenterY();
+            int maxx = vp.getImageWidth();
+            int maxy = vp.getImageHeight();
+            ov_img_gra.drawLine(cx, 0, cx, maxy);
+            ov_img_gra.drawLine(0, cy, maxx, cy);
+            /*
+             * Semi-transparent image is ready
+             */
+
+            /*
+             * Save clip area
+             */
             Rectangle2D clip = g.getClipBounds();
-
             g.setClip((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
                 (int) r.getHeight());
-            g.setColor(Color.red);
-            g.draw(extentPixels);
-            // System.err.println("extentPixels =
-            // "+extentPixels.getX()+","+extentPixels.getY()+",
-            // "+extentPixels.getWidth()+","+extentPixels.getHeight());
-            g.setColor(new Color(100, 100, 100, 100));
-            g.fill(extentPixels);
-            // dibujamos las líneas vertical y horizontal
-            double pRightUp = (int) (r.getWidth() + r.getX());
 
-            Line2D.Double linVert =
-                new Line2D.Double(extentPixels.getCenterX(), r.getY(),
-                    extentPixels.getCenterX(), r.getMaxY());
-            Line2D.Double linHoriz =
-                new Line2D.Double(r.getX(), extentPixels.getCenterY(),
-                    pRightUp, extentPixels.getCenterY());
-
-            g.setColor(Color.darkGray);
-            g.draw(linVert);
-            g.draw(linHoriz);
-
+            /*
+             * Paste resized image (with transparency)
+             */
+            ov_img = ov_img.getScaledInstance(
+                (int) r.getWidth(),
+                (int) r.getHeight(), Image.SCALE_SMOOTH);
+            g.drawImage(ov_img, (int) r.getX(), (int) r.getY(), null);
+            
+            /*
+             * Restore clip area
+             */
             g.setClip((int) clip.getX(), (int) clip.getY(),
                 (int) clip.getWidth(), (int) clip.getHeight());
             extent = null;
@@ -327,6 +369,11 @@
         super.loadFromState(state);
         fframeViewDependence =
             (FFrameView) state.get(FFRAMEVIEWDEPENDENCE_FIELD);
+        
+        /*
+         * force refreshment of other fields
+         */
+        this.setView(viewDocument);
     }
 
     @Override
