diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.2
+---
+* Convert to/from Double to avoid precision issues.
+
 0.1.0.1
 -------
 * Change `tested-with` to admit the support window is only 7.8+ at this point due to the use of `Data.Coerce`
diff --git a/fixed.cabal b/fixed.cabal
--- a/fixed.cabal
+++ b/fixed.cabal
@@ -1,6 +1,6 @@
 name:          fixed
 category:      Numeric
-version:       0.1.0.1
+version:       0.2
 license:       BSD3
 cabal-version: >= 1.8
 license-file:  LICENSE
diff --git a/src/Numeric/Fixed.hs b/src/Numeric/Fixed.hs
--- a/src/Numeric/Fixed.hs
+++ b/src/Numeric/Fixed.hs
@@ -16,10 +16,10 @@
 -- | A signed 2s complement 15.16 scale fixed precision number
 newtype {-# CTYPE "signed int" #-} Fixed = Fixed { getFixed :: CInt } deriving (Eq,Ord,Typeable,Storable)
 
-fromFixed :: Fixed -> Float
+fromFixed :: Fixed -> Double
 fromFixed (Fixed x) = fromIntegral x / 65536
 
-toFixed :: Float -> Fixed
+toFixed :: Double -> Fixed
 toFixed x = Fixed $ floor (x * 65536 + 0.5)
 
 instance Show Fixed where
