Index: /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java	(revision 11953)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java	(revision 11954)
@@ -110,5 +110,4 @@
                 interpolation = ImageWarp.Interpolation.BILINEAR;
         }
-        double margin = interpolation.getMargin();
 
         Projection projCurrent = Main.getProjection();
@@ -121,4 +120,5 @@
         ProjectionBounds pbTarget = projCurrent.getEastNorthBoundsBox(pbServer, projServer);
 
+        double margin = 2;
         Dimension dim = getDimension(pbMarginAndAlign(pbTarget, scaleMapView, margin), scaleMapView);
         Integer scaleFix = limitScale(source.getTileSize(), Math.sqrt(dim.getWidth() * dim.getHeight()));
Index: /trunk/src/org/openstreetmap/josm/tools/ImageWarp.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ImageWarp.java	(revision 11953)
+++ /trunk/src/org/openstreetmap/josm/tools/ImageWarp.java	(revision 11954)
@@ -168,5 +168,5 @@
             for (int i = 0; i < imgTarget.getWidth(); i++) {
                 Point2D srcCoord = invTransform.transform(new Point2D.Double(i, j));
-                if (isInside(srcCoord, srcRect, interpolation.getMargin())) {
+                if (srcRect.contains(srcCoord)) {
                     int rgba;
                     switch (interpolation) {
@@ -203,24 +203,9 @@
     }
 
-    private static boolean isInside(Point2D p, Rectangle2D rect, double margin) {
-        return isInside(p.getX(), rect.getMinX(), rect.getMaxX(), margin) &&
-                isInside(p.getY(), rect.getMinY(), rect.getMaxY(), margin);
-    }
-
-    private static boolean isInside(double x, double xMin, double xMax, double margin) {
-        return x + margin >= xMin && x - margin <= xMax;
-    }
-
     private static int getColor(int x, int y, BufferedImage img) {
         // border strategy: continue with the color of the outermost pixel,
-        // but change alpha component to fully translucent
-        int a = Utils.clamp(x, 0, img.getWidth() - 1);
-        int b = Utils.clamp(y, 0, img.getHeight() - 1);
-        int clr = img.getRGB(a, b);
-        if (a == x && b == y)
-            return clr;
-        // keep color components, but set transparency to 0
-        // (the idea is that border fades out and mixes with next tile)
-        return clr & 0x00ffffff;
+        return img.getRGB(
+                Utils.clamp(x, 0, img.getWidth() - 1),
+                Utils.clamp(y, 0, img.getHeight() - 1));
     }
 }
