Index: applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java
===================================================================
--- applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java	(revision 27306)
+++ applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java	(revision 27313)
@@ -27,4 +27,5 @@
 
 import java.awt.AlphaComposite;
+import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Dimension;
@@ -33,6 +34,9 @@
 import java.awt.Graphics2D;
 import java.awt.Image;
+import java.awt.Shape;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Rectangle2D;
@@ -303,10 +307,7 @@
         int ws = (int)(distScale * 20.0);   // length of a segment
         
-        /* white background & shadow */
+        /* white background */
         g2d.setColor(Color.WHITE);
         g2d.fillRect(xLeft-1, yBar-1, w+2, h+2);
-        g2d.setFont(labelFont.deriveFont(AffineTransform.getTranslateInstance(0.5,0.4)));
-        g2d.drawString("0", 0, yLabel);
-        g2d.drawString(rightLabel, xRight, yLabel);
         
         /* black foreground */
@@ -317,6 +318,6 @@
         g2d.fillRect(xLeft+w-ws, yBar, ws, h);
         g2d.setFont(labelFont);
-        g2d.drawString("0", 0, yLabel);
-        g2d.drawString(rightLabel, xRight, yLabel);
+        paintText(g2d, "0", 0, yLabel);
+        paintText(g2d, rightLabel, xRight, yLabel);
         
         /* lexical scale */
@@ -328,10 +329,5 @@
         bound = g2d.getFontMetrics().getStringBounds(lexicalScale, g2d);
         int xLexical = Math.max(0, xLeft + (w - (int)bound.getWidth()) / 2);
-        g2d.setColor(Color.WHITE);
-        g2d.setFont(scaleFront.deriveFont(AffineTransform.getTranslateInstance(0.5,0.4)));
-        g2d.drawString(lexicalScale, xLexical, yLexical);
-        g2d.setColor(Color.BLACK);
-        g2d.setFont(scaleFront);
-        g2d.drawString(lexicalScale, xLexical, yLexical);
+        paintText(g2d, lexicalScale, xLexical, yLexical);
     }
     
@@ -344,5 +340,7 @@
     public void paintMapAttribution(Graphics2D g2d, PageFormat pageFormat) {
         String text = Main.pref.get("print.attribution", PrintPlugin.DEF_ATTRIBUTION);
-        if (text == null || text.length() > 0) {
+        if (text != null && text.length() > 0) {
+            text += " ";
+
             Font attributionFont = new Font("Arial", Font.PLAIN, FONT_SIZE * 8 / 10);
             g2d.setFont(attributionFont);
@@ -350,11 +348,37 @@
             int x = (int)((pageFormat.getImageableWidth() - bound.getWidth()));
             int y = FONT_SIZE * 3 / 2;
+            paintText(g2d, text, x, y);
+        }
+    }
+    
+    /**
+     * Paint a text.
+     * 
+     * This method will not only draw the letters but also a background 
+     * which improves redability.
+     * 
+     * @param g2d the graphics context to use for painting
+     * @param text the text to be drawn
+     * @param x the x coordinate
+     * @param y the y coordinate
+     */
+    
+    public void paintText(Graphics2D g2d, String text, int x, int y) {
+            AffineTransform ax = g2d.getTransform();
+            g2d.translate(x,y);
+
+            FontRenderContext frc = g2d.getFontRenderContext();
+            GlyphVector gv = g2d.getFont().createGlyphVector(frc, text);
+            Shape textOutline = gv.getOutline();
+
+            g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
             g2d.setColor(Color.WHITE);
-            g2d.setFont(attributionFont.deriveFont(AffineTransform.getTranslateInstance(0.5,0.4)));
-            g2d.drawString(text, x, y);
+            g2d.draw(textOutline);
+            
+            g2d.setStroke(new BasicStroke());
             g2d.setColor(Color.BLACK);
-            g2d.setFont(attributionFont);
-            g2d.drawString(text, x, y);
-        }
+            g2d.drawString(text, 0, 0);
+
+            g2d.setTransform(ax);
     }
 
