diff --git a/reanimate-svg.cabal b/reanimate-svg.cabal
--- a/reanimate-svg.cabal
+++ b/reanimate-svg.cabal
@@ -1,5 +1,5 @@
 name:                reanimate-svg
-version:             0.9.4.0
+version:             0.9.5.0
 synopsis:            SVG file loader and serializer
 description:
   reanimate-svg provides types representing a SVG document,
@@ -61,6 +61,7 @@
                , transformers >= 0.3 && < 0.6
                , mtl        >= 2.1 && < 2.3
                , lens       >= 4.6 && < 5
+               , double-conversion >= 2.0.0.0 && < 3.0.0.0
 
 test-suite test
   default-language: Haskell2010
diff --git a/src/Graphics/SvgTree/Misc.hs b/src/Graphics/SvgTree/Misc.hs
--- a/src/Graphics/SvgTree/Misc.hs
+++ b/src/Graphics/SvgTree/Misc.hs
@@ -1,19 +1,16 @@
-module Graphics.SvgTree.Misc where
+module Graphics.SvgTree.Misc
+  ( ppD
+  , ppF
+  ) where
 
-import Numeric
+import           Data.Double.Conversion.Text
+import qualified Data.Text                   as T
 
+precision :: Int
+precision = 6
+
 ppD :: Double -> String
-ppD c = pickMin (showFFloat Nothing c "") (showFFloat (Just precision) c "")
-  where
-    pickMin [] _ = []
-    pickMin _ [] = []
-    pickMin (x:xs) (_:ys) = x : pickMin xs ys
-    precision = 6
+ppD c = T.unpack $ T.take (precision+2) $ toShortest c
 
 ppF :: Float -> String
-ppF c = pickMin (showFFloat Nothing c "") (showFFloat (Just precision) c "")
-  where
-    pickMin [] _ = []
-    pickMin _ [] = []
-    pickMin (x:xs) (_:ys) = x : pickMin xs ys
-    precision = 6
+ppF = ppD . realToFrac
