diff --git a/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java b/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java
index 2ca66ef..34ffb72 100644
--- a/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java
+++ b/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java
@@ -21,6 +21,7 @@
 import java.text.DecimalFormatSymbols;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -39,6 +40,8 @@
 
 
 public class PDFWriter {
+    private DecimalFormat df = new DecimalFormat("#.####", new DecimalFormatSymbols(Locale.US));
+    private Map<Float, String> floatCache = new HashMap<Float, String>();
     protected StringBuilder s = new StringBuilder();
     protected UniqueName key;
     private int currentMCID;
@@ -88,8 +91,14 @@
             s.append(" ");
         } else if (c instanceof COSFloat) {
             float f = ((COSFloat) c).floatValue();
-            s.append(new DecimalFormat("#.####", new DecimalFormatSymbols(Locale.US)).format(f));
+            if (!floatCache.containsKey(f)) {
+                addCache(f);
+            }
+            s.append(floatCache.get(f));
             s.append(" ");
+            if (floatCache.size() > 1024) {
+                floatCache.clear();
+            }
         } else if (c instanceof COSName) {
             COSName cn = (COSName)c;
             s.append("/" + key.getName(cn));
@@ -127,6 +136,11 @@
         }
     }
 
+    protected void addCache(float f) {
+        String formatted = df.format(f);
+        floatCache.put(f, formatted);
+    }
+
     private void updateMCID(Map.Entry<COSName, COSBase> cn, Collection<COSBase> dictArgs) {
         COSBase cosMCID = cn.getValue();
         assert cosMCID instanceof COSInteger;
diff --git a/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java b/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java
index 004f369..3e47daa 100644
--- a/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java
@@ -39,4 +39,26 @@
         Assert.assertEquals(pdfWriter.writeText(pdStream), text + "\n");
         Locale.setDefault(l);
     }
+
+    @Test
+    public void testFloatCache() throws IOException {
+        String text = "[1.1 1.1] a";
+        PDStream pdStream = new PDStream(new PDDocument(), new ByteArrayInputStream(text.getBytes("UTF-8")));
+        MyPDFWriter pdfWriter = new MyPDFWriter();
+        pdfWriter.writeText(pdStream);
+        Assert.assertEquals(pdfWriter.i, 1);
+    }
+
+    private static class MyPDFWriter extends PDFWriter {
+        int i;
+
+        public MyPDFWriter() {
+            super(null, 0);
+        }
+
+        protected void addCache(float f) {
+            super.addCache(f);
+            i++;
+        }
+    };
 }
