Index: src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java
===================================================================
--- src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java	(revision 36259)
+++ src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java	(working copy)
@@ -69,20 +69,18 @@
         // Draw terms of use text
         int termsTextHeight = 0;
         int termsTextY = height;
+        int padding = 5;
 
         if (attrTermsText != null) {
             Rectangle2D termsStringBounds = g.getFontMetrics().getStringBounds(attrTermsText, g);
             int textRealHeight = (int) termsStringBounds.getHeight();
-            termsTextHeight = textRealHeight - 5;
+            termsTextHeight = textRealHeight - padding;
             int termsTextWidth = (int) termsStringBounds.getWidth();
             termsTextY = height - termsTextHeight;
             int x = 2;
             int y = height - termsTextHeight;
-            attrToUBounds = new Rectangle(x, y-termsTextHeight, termsTextWidth, textRealHeight);
-            g.setColor(Color.black);
-            g.drawString(attrTermsText, x + 1, y + 1);
-            g.setColor(Color.white);
-            g.drawString(attrTermsText, x, y);
+            attrToUBounds = new Rectangle(x, y - termsTextHeight, termsTextWidth, textRealHeight);
+            drawShadedText(g, attrTermsText, x, y);
         } else {
             attrToUBounds = null;
         }
@@ -102,19 +100,17 @@
         g.setFont(ATTR_FONT);
         String attributionText = source.getAttributionText(zoom, topLeft, bottomRight);
         if (attributionText == null) {
-            // In case attribution text has been forgotte, display URL
+            // In case the attribution text has been forgotten, display URL
             attributionText = source.getAttributionLinkURL();
         }
         if (attributionText != null) {
             Rectangle2D stringBounds = g.getFontMetrics().getStringBounds(attributionText, g);
-            int textHeight = (int) stringBounds.getHeight() - 5;
-            int x = width - (int) stringBounds.getWidth();
+            int textHeight = (int) stringBounds.getHeight() - padding;
+            int textWidth = (int) stringBounds.getWidth() + padding;
+            int x = width - textWidth;
             int y = height - textHeight;
-            g.setColor(Color.black);
-            g.drawString(attributionText, x + 1, y + 1);
-            g.setColor(Color.white);
-            g.drawString(attributionText, x, y);
-            attrTextBounds = new Rectangle(x, y-textHeight, (int) stringBounds.getWidth(), (int) stringBounds.getHeight());
+            drawShadedText(g, attributionText, x, y);
+            attrTextBounds = new Rectangle(x, y - textHeight, (int) stringBounds.getWidth(), (int) stringBounds.getHeight());
         } else {
             attrTextBounds = null;
         }
@@ -122,6 +118,13 @@
         g.setFont(font);
     }
 
+    private static void drawShadedText(Graphics g, String text, int x, int y) {
+        g.setColor(Color.black);
+        g.drawString(text, x + 1, y + 1);
+        g.setColor(Color.white);
+        g.drawString(text, x, y);
+    }
+
     public boolean handleAttributionCursor(Point p) {
         if (attrTextBounds != null && attrTextBounds.contains(p)) {
             return true;
