diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## [v1.4.0.2](https://github.com/diagrams/diagrams-svg/tree/v1.4.0.2) (2016-06-06)
+
+- allow `base-4.9`
+- test with GHC 8.0
+- minor documentation updates
+
 ## [v1.4.0.1](https://github.com/diagrams/diagrams-svg/tree/v1.4.0.1) (2016-05-01)
 
 - allow `lens-4.14`
diff --git a/diagrams-svg.cabal b/diagrams-svg.cabal
--- a/diagrams-svg.cabal
+++ b/diagrams-svg.cabal
@@ -1,5 +1,5 @@
 Name:                diagrams-svg
-Version:             1.4.0.1
+Version:             1.4.0.2
 Synopsis:            SVG backend for diagrams drawing EDSL.
 Homepage:            http://projects.haskell.org/diagrams/
 License:             BSD3
diff --git a/src/Diagrams/Backend/SVG.hs b/src/Diagrams/Backend/SVG.hs
--- a/src/Diagrams/Backend/SVG.hs
+++ b/src/Diagrams/Backend/SVG.hs
@@ -89,9 +89,9 @@
 -- situations GHC may not be able to infer the type @m@, in which case
 -- you can use a type annotation to specify it; it may be useful to
 -- simply use the type synonym @Diagram SVG = QDiagram SVG V2 Double
--- Any@.) This returns an 'Graphics.Rendering.SVG.Element' value, which
--- you can, /e.g./ render to a 'ByteString' using 'Lucid.Svg.renderBS'
--- from the 'lucid-svg' package.
+-- Any@.) This returns an 'Graphics.Svg.Core.Element' value, which
+-- you can, /e.g./ render to a 'ByteString' using 'Graphics.Svg.Core.renderBS'
+-- from the 'svg-builder' package.
 --
 -----------------------------------------------------------------------------
 
@@ -148,11 +148,11 @@
 import           Diagrams.TwoD.Path       (Clip (Clip))
 import           Diagrams.TwoD.Text
 
--- from lucid-svg
+-- from svg-builder
 import           Graphics.Svg             hiding ((<>))
 
 -- from this package
-import           Graphics.Rendering.SVG   (SVGFloat, Element)
+import           Graphics.Rendering.SVG   (SVGFloat)
 import qualified Graphics.Rendering.SVG   as R
 
 -- | @SVG@ is simply a token used to identify this rendering backend
@@ -194,7 +194,7 @@
 runRenderM o s = flip evalState initialSvgRenderState
                $ runReaderT  s (initialEnvironment o)
 
-instance SVGFloat n => Monoid (Render SVG V2 n) where
+instance Monoid (Render SVG V2 n) where
   mempty = R $ return mempty
   R r1 `mappend` R r2_ = R $ do
     svg1 <- r1
@@ -214,7 +214,7 @@
     Nothing    -> return svg
     Just paths -> renderClips paths
   where
-    renderClips :: SVGFloat n => [Path V2 n] -> SvgRenderM n
+    renderClips :: [Path V2 n] -> SvgRenderM n
     renderClips []     = return svg
     renderClips (p:ps) = do
       clipPathId += 1
@@ -274,29 +274,29 @@
     R r = foldMap rtree rs
 
 -- | Lens onto the size of the svg options.
-sizeSpec :: SVGFloat n => Lens' (Options SVG V2 n) (SizeSpec V2 n)
+sizeSpec :: Lens' (Options SVG V2 n) (SizeSpec V2 n)
 sizeSpec f opts = f (_size opts) <&> \s -> opts { _size = s }
 
 -- | Lens onto the svg definitions of the svg options.
-svgDefinitions :: SVGFloat n => Lens' (Options SVG V2 n) (Maybe Element)
+svgDefinitions :: Lens' (Options SVG V2 n) (Maybe Element)
 svgDefinitions f opts =
   f (_svgDefinitions opts) <&> \ds -> opts { _svgDefinitions = ds }
 
 -- | Lens onto the idPrefix of the svg options. This is the prefix given
 --   to clipping paths to distinguish them from other svg files in the
 --   same web page.
-idPrefix :: SVGFloat n => Lens' (Options SVG V2 n) T.Text
+idPrefix :: Lens' (Options SVG V2 n) T.Text
 idPrefix f opts = f (_idPrefix opts) <&> \i -> opts { _idPrefix = i }
 
 -- | Lens onto the svgAttributes field of the svg options. This field
 --   is provided to supply SVG attributes to the entire diagram.
-svgAttributes :: SVGFloat n => Lens' (Options SVG V2 n) [Attribute]
+svgAttributes :: Lens' (Options SVG V2 n) [Attribute]
 svgAttributes f opts =
   f (_svgAttributes opts) <&> \ds -> opts { _svgAttributes = ds }
 
 -- | Lens onto the generateDoctype field of the svg options. Set
 --   to False if you don't want a doctype tag included in the output.
-generateDoctype :: SVGFloat n => Lens' (Options SVG V2 n) Bool
+generateDoctype :: Lens' (Options SVG V2 n) Bool
 generateDoctype f opts =
   f (_generateDoctype opts) <&> \ds -> opts { _generateDoctype = ds }
 
@@ -379,7 +379,7 @@
           _   -> fail   "Unknown mime type while rendering image"
     return $ R.renderDImage di $ R.dataUri mime d
 
-instance (Hashable n, SVGFloat n) => Hashable (Options SVG V2 n) where
+instance Hashable n => Hashable (Options SVG V2 n) where
   hashWithSalt s  (SVGOptions sz defs ia sa gd) =
     s  `hashWithSalt`
     sz `hashWithSalt`
diff --git a/src/Graphics/Rendering/SVG.hs b/src/Graphics/Rendering/SVG.hs
--- a/src/Graphics/Rendering/SVG.hs
+++ b/src/Graphics/Rendering/SVG.hs
@@ -297,15 +297,15 @@
   , renderFontFamily
   , renderMiterLimit ]
 
-renderMiterLimit :: SVGFloat n => Style v n -> [Attribute]
+renderMiterLimit :: Style v n -> [Attribute]
 renderMiterLimit s = renderAttr Stroke_miterlimit_ miterLimit
  where miterLimit = getLineMiterLimit <$> getAttr s
 
-renderOpacity :: SVGFloat n => Style v n -> [Attribute]
+renderOpacity :: Style v n -> [Attribute]
 renderOpacity s = renderAttr Opacity_ o
  where o = getOpacity <$> getAttr s
 
-renderFillRule :: SVGFloat n => Style v n -> [Attribute]
+renderFillRule :: Style v n -> [Attribute]
 renderFillRule s = renderTextAttr Fill_rule_ fr
   where fr = (fillRuleToText . getFillRule) <$> getAttr s
         fillRuleToText :: FillRule -> AttributeValue
@@ -316,7 +316,7 @@
 renderLineWidth s = renderAttr Stroke_width_ lWidth
   where lWidth = getNumAttr getLineWidth s
 
-renderLineCap :: SVGFloat n => Style v n -> [Attribute]
+renderLineCap :: Style v n -> [Attribute]
 renderLineCap s = renderTextAttr Stroke_linecap_ lCap
   where lCap = (lineCapToText . getLineCap) <$> getAttr s
         lineCapToText :: LineCap -> AttributeValue
@@ -324,7 +324,7 @@
         lineCapToText LineCapRound  = "round"
         lineCapToText LineCapSquare = "square"
 
-renderLineJoin :: SVGFloat n => Style v n -> [Attribute]
+renderLineJoin :: Style v n -> [Attribute]
 renderLineJoin s = renderTextAttr Stroke_linejoin_ lj
   where lj = (lineJoinToText . getLineJoin) <$> getAttr s
         lineJoinToText :: LineJoin -> AttributeValue
@@ -351,7 +351,7 @@
  where
   fs = pack <$> getNumAttr ((++ "px") . show . getFontSize) s
 
-renderFontSlant :: SVGFloat n => Style v n -> [Attribute]
+renderFontSlant :: Style v n -> [Attribute]
 renderFontSlant s = renderTextAttr Font_style_ fs
  where
   fs = (fontSlantAttr . getFontSlant) <$> getAttr s
@@ -360,7 +360,7 @@
   fontSlantAttr FontSlantOblique = "oblique"
   fontSlantAttr FontSlantNormal  = "normal"
 
-renderFontWeight :: SVGFloat n => Style v n -> [Attribute]
+renderFontWeight :: Style v n -> [Attribute]
 renderFontWeight s = renderTextAttr Font_weight_ fw
  where
   fw = (fontWeightAttr . getFontWeight) <$> getAttr s
@@ -368,7 +368,8 @@
   fontWeightAttr FontWeightNormal = "normal"
   fontWeightAttr FontWeightBold   = "bold"
 
-renderFontFamily :: SVGFloat n => Style v n -> [Attribute]
+
+renderFontFamily :: Style v n -> [Attribute]
 renderFontFamily s = renderTextAttr Font_family_ ff
  where
   ff = (pack . getFont) <$> getAttr s
