diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,11 @@
 See full history at: <https://github.com/faylang/fay/commits>
 
 
+#### 0.19.0.1 (2014-01-15)
+
+Dependency bumps:
+* Allow `aeson 0.7.*`
+
 ## 0.19 (2014-01-14)
 
 * Made import Prelude is implicit, but note that RebindableSyntax implies NoImplicitPrelude.
diff --git a/fay.cabal b/fay.cabal
--- a/fay.cabal
+++ b/fay.cabal
@@ -1,5 +1,5 @@
 name:                fay
-version:             0.19
+version:             0.19.0.1
 synopsis:            A compiler for Fay, a Haskell subset that compiles to JavaScript.
 description:         Fay is a proper subset of Haskell which is type-checked
                      with GHC, and compiled to JavaScript. It is lazy, pure, has a Fay monad,
@@ -107,7 +107,7 @@
   ghc-options:       -O2 -Wall -fno-warn-name-shadowing
   build-depends:     base                 >= 4       && < 5
                    , Cabal                              < 1.19
-                   , aeson                              < 0.7
+                   , aeson                              < 0.8
                    , attoparsec                         < 0.12
                    , bytestring                         < 0.11
                    , containers                         < 0.6
@@ -133,6 +133,7 @@
                    , utf8-string                        < 0.4
                    , vector                             < 0.11
                    , sourcemap                          < 0.2
+                   , scientific                         < 0.3
 
 executable fay
   hs-source-dirs:    src/main
diff --git a/src/Fay/Compiler/Print.hs b/src/Fay/Compiler/Print.hs
--- a/src/Fay/Compiler/Print.hs
+++ b/src/Fay/Compiler/Print.hs
@@ -46,7 +46,7 @@
 -- JS-format literals. Could use the Text.JSON library.
 instance Printable JsLit where
   printJS typ = write $
-    let u8 = UTF8.toString . encode . UTF8.fromString
+    let u8 = UTF8.toString . encode
     in case typ of
       (JsChar char)    -> u8 [char]
       (JsStr str)      -> u8 str
diff --git a/src/Fay/Convert.hs b/src/Fay/Convert.hs
--- a/src/Fay/Convert.hs
+++ b/src/Fay/Convert.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE PatternGuards      #-}
@@ -30,6 +31,9 @@
 import           Numeric
 import           Safe
 import qualified Text.Show.Pretty       as Show
+#if MIN_VERSION_aeson(0,7,0)
+import Data.Scientific
+#endif
 
 --------------------------------------------------------------------------------
 -- The conversion functions.
@@ -69,8 +73,14 @@
           int = convertInt value
 
   -- Number converters
+
+#if MIN_VERSION_aeson(0,7,0)
+  convertDouble = fmap (Number . fromFloatDigits) . pDouble
+  convertInt = fmap (Number . fromInteger) . pInt
+#else
   convertDouble = fmap (Number . D) . pDouble
   convertInt = fmap (Number . I) . pInt
+#endif
 
   -- Number parsers
   pDouble :: Show.Value -> Maybe Double
@@ -193,9 +203,17 @@
 
 -- | Parse a number.
 parseNumber :: Value -> Maybe Number
+#if MIN_VERSION_aeson(0,7,0)
 parseNumber value = case value of
+  Number n
+    | base10Exponent n >= 0 -> return . I . round $ n
+    | otherwise             -> return . D . fromRational . toRational $ n
+  _ -> mzero
+#else
+parseNumber value = case value of
   Number n -> return n
   _ -> mzero
+#endif
 
 -- | Parse a bool.
 parseBool :: Value -> Maybe Bool
