diff --git a/Chart.cabal b/Chart.cabal
--- a/Chart.cabal
+++ b/Chart.cabal
@@ -1,5 +1,5 @@
 Name: Chart
-Version: 1.9
+Version: 1.9.1
 License: BSD3
 License-file: LICENSE
 Copyright: Tim Docker, 2006-2014
@@ -21,7 +21,7 @@
   Build-depends: base >= 3 && < 5
                , old-locale
                , time, mtl, array
-               , lens >= 3.9 && < 4.17
+               , lens >= 3.9 && < 4.18
                , colour >= 2.2.1 && < 2.4
                , data-default-class < 0.2
                , mtl >= 2.0 && < 2.3
diff --git a/Graphics/Rendering/Chart/Axis/Time.hs b/Graphics/Rendering/Chart/Axis/Time.hs
--- a/Graphics/Rendering/Chart/Axis/Time.hs
+++ b/Graphics/Rendering/Chart/Axis/Time.hs
@@ -161,8 +161,8 @@
   -> AxisFn t
 timeValueAxis tseq lseq labelf lal cseq contextf clal pts = AxisData {
     _axis_visibility = def,
-    _axis_viewport = vmap' (min', max'),
-    _axis_tropweiv = invmap' (min', max'),
+    _axis_viewport = vmap' (tvFromUTCTime min', tvFromUTCTime max'),
+    _axis_tropweiv = invmap' (tvFromUTCTime min', tvFromUTCTime max'),
     _axis_ticks    = [ (tvFromUTCTime t,2) | t <- times] ++ [ (tvFromUTCTime t,5) | t <- ltimes, visible t],
     _axis_labels   = [ [ (tvFromUTCTime t,l) | (t,l) <- labels labelf   ltimes lal, visible t]
                      , [ (tvFromUTCTime t,l) | (t,l) <- labels contextf ctimes clal, visible t]
@@ -196,11 +196,11 @@
       m1' = doubleFromTimeValue m1
       m2' = doubleFromTimeValue m2
 
-vmap' :: TimeValue x => (UTCTime,UTCTime) -> Range -> x -> Double
+vmap' :: TimeValue x => (x,x) -> Range -> x -> Double
 vmap' (v1,v2) (v3,v4) v = v3 + (doubleFromTimeValue v - doubleFromTimeValue v1) * (v4-v3)
                               / (doubleFromTimeValue v2 - doubleFromTimeValue v1)
 
-invmap' :: TimeValue x => (UTCTime,UTCTime) -> Range -> Double -> x
+invmap' :: TimeValue x => (x,x) -> Range -> Double -> x
 invmap' (v3,v4) (d1,d2) d = timeValueFromDouble (doubleFromTimeValue v3 + ( (d-d1) * doubleRange
                                                    / (d2-d1) ))
     where doubleRange = doubleFromTimeValue v4 - doubleFromTimeValue v3
diff --git a/Graphics/Rendering/Chart/Easy.hs b/Graphics/Rendering/Chart/Easy.hs
--- a/Graphics/Rendering/Chart/Easy.hs
+++ b/Graphics/Rendering/Chart/Easy.hs
@@ -9,7 +9,7 @@
 -- 
 -- Importing the Easy module brings into scope all core functions and types required
 -- for working with the chart library. This includes key external dependencies such as
--- Control.Len and Data.Colour. The module also provides several helper functions for
+-- Control.Lens and Data.Colour. The module also provides several helper functions for
 -- quickly generating common plots. Note that chart backends must still be explicitly
 -- imported, as some backends cannot be built on all platforms.
 --
diff --git a/Graphics/Rendering/Chart/State.hs b/Graphics/Rendering/Chart/State.hs
--- a/Graphics/Rendering/Chart/State.hs
+++ b/Graphics/Rendering/Chart/State.hs
@@ -92,14 +92,17 @@
 -- | Pop and return the next color from the state
 takeColor :: EC l (AlphaColour Double)
 takeColor = liftCState $ do
-  (c:cs) <- use colors
+  (c,cs) <- fromInfiniteList `fmap` use colors
   colors .= cs
   return c
 
 -- | Pop and return the next shape from the state
 takeShape :: EC l PointShape
 takeShape = liftCState $ do
-  (c:cs) <- use shapes
+  (c,cs) <- fromInfiniteList `fmap` use shapes
   shapes .= cs
   return c
 
+fromInfiniteList :: [a] -> (a, [a])
+fromInfiniteList []     = error "fromInfiniteList (takeColor or takeShape): empty list"
+fromInfiniteList (x:xs) = (x, xs)
