diff --git a/language-dot.cabal b/language-dot.cabal
--- a/language-dot.cabal
+++ b/language-dot.cabal
@@ -1,16 +1,16 @@
 name:         language-dot
-version:      0.0.8
+version:      0.0.9
 category:     Language
 synopsis:     A library for the analysis and creation of Graphviz DOT files
 description:  A library for the analysis and creation of Graphviz DOT files.
 author:       Brian Lewis <brian@lorf.org>
-maintainer:   Brian Lewis <brian@lorf.org>
+maintainer:   Ben Gamari <ben@smart-cactus.org>
 copyright:    (c) 2009 Galois, Inc.
 license:      BSD3
 license-file: LICENSE
 
-cabal-version: >= 1.6
-build-type:    Custom
+cabal-version: >= 1.8
+build-type:    Simple
 
 extra-source-files:
   src/test.hs
@@ -20,8 +20,7 @@
   default:     True
 
 library
-  hs-source-dirs:
-    src
+  hs-source-dirs: src
 
   exposed-modules:
     Language.Dot
@@ -36,23 +35,34 @@
     pretty  == 1.*
 
   ghc-options: -Wall
-  if impl(ghc >= 6.8)
-    ghc-options: -fwarn-tabs
 
+test-suite test
+  type: exitcode-stdio-1.0
+  main-is: test.hs
+  hs-source-dirs: src
+  ghc-options: -Wall
+  cpp-options: -DTEST
+  build-depends:
+    base    == 4.*,
+    mtl     == 1.* || == 2.*,
+    parsec  == 3.*,
+    pretty  == 1.*
+
 executable ppdot
   if flag(executable)
     buildable: True
   else
     buildable: False
 
-  hs-source-dirs:
-    src
-
   main-is: ppdot.hs
+  hs-source-dirs: src
+  build-depends:
+    base    == 4.*,
+    mtl     == 1.* || == 2.*,
+    parsec  == 3.*,
+    pretty  == 1.*
 
   ghc-options: -Wall
-  if impl(ghc >= 6.8)
-    ghc-options: -fwarn-tabs
 
 source-repository head
   type:     git
diff --git a/src/Language/Dot/Pretty.hs b/src/Language/Dot/Pretty.hs
--- a/src/Language/Dot/Pretty.hs
+++ b/src/Language/Dot/Pretty.hs
@@ -7,6 +7,7 @@
 
 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
+import Numeric
 import Text.PrettyPrint
 
 import Language.Dot.Syntax
@@ -43,7 +44,7 @@
   pp (NameId v)    = text v
   pp (StringId v)  = doubleQuotes (text v)
   pp (IntegerId v) = integer v
-  pp (FloatId v)   = float v
+  pp (FloatId v)   = ffloat v
   pp (XmlId v)     = langle <> pp v <> rangle
 
 instance PP Statement where
@@ -129,3 +130,6 @@
 langle = char '<'
 rangle = char '>'
 slash  = char '/'
+
+ffloat :: Float -> Doc
+ffloat v = text (showFFloat Nothing v "")
