diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,16 @@
+## [v1.4.1](https://github.com/diagrams/diagrams-cairo/tree/v1.4.1) (2018-05-17)
+
+- Allow `base-4.11` and `lens-4.16`
+- Add `Semigroup` instance for `Render Cairo V2 Double`
+- Drop GHC 7.8 support
+
 ## [v1.4](https://github.com/diagrams/diagrams-cairo/tree/v1.4) (2016-10-26)
 
-- No significant changes, just bumping version for diagrams 1.4 release
+- No significant changes, just bumping version for diagrams 1.4
+  release
+
+- Allow `vector-0.12` (Hackage revision 1)
+- Allow `base-4.10` and `optparse-applicative-0.14` (Hackage rev 2)
 
 ## [v1.3.1.2](https://github.com/diagrams/diagrams-cairo/tree/v1.3.1.2) (2016-08-22)
 
diff --git a/diagrams-cairo.cabal b/diagrams-cairo.cabal
--- a/diagrams-cairo.cabal
+++ b/diagrams-cairo.cabal
@@ -1,5 +1,5 @@
 Name:                diagrams-cairo
-Version:             1.4
+Version:             1.4.1
 Synopsis:            Cairo backend for diagrams drawing EDSL
 Description:         A full-featured backend for rendering
                      diagrams using the cairo rendering engine.
@@ -40,7 +40,7 @@
 Build-type:          Simple
 Cabal-version:       >=1.10
 Extra-source-files:  CHANGELOG.md, README.markdown
-Tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
+Tested-with:         GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.2
 Source-repository head
   type:     git
   location: http://github.com/diagrams/diagrams-cairo.git
@@ -53,7 +53,7 @@
                        Diagrams.Backend.Cairo.Ptr
                        Diagrams.Backend.Cairo.Text
   Hs-source-dirs:      src
-  Build-depends:       base >= 4.2 && < 4.10,
+  Build-depends:       base >= 4.2 && < 4.12,
                        mtl >= 2.0 && < 2.3,
                        filepath,
                        diagrams-core >= 1.3 && < 1.5,
@@ -63,18 +63,16 @@
                        colour,
                        split >= 0.1.2 && < 0.3,
                        containers >= 0.3 && < 0.6,
-                       lens >= 3.8 && < 4.16,
+                       lens >= 3.8 && < 4.17,
                        data-default-class >= 0.0.1 && < 0.2,
                        statestack >= 0.2 && < 0.3,
                        JuicyPixels >= 3.1.3.2 && < 3.3,
-                       vector >= 0.10.0 && < 0.12,
+                       vector >= 0.10.0 && < 0.13,
                        array >= 0.4.0 && < 0.6,
                        bytestring >= 0.9 && < 0.11,
-                       optparse-applicative >= 0.13 && < 0.14,
+                       optparse-applicative >= 0.13 && < 0.15,
                        transformers >= 0.3 && <0.6,
                        hashable >= 1.1 && < 1.3
-  if impl(ghc < 7.6)
-    Build-depends: ghc-prim
 
   default-language:    Haskell2010
 
diff --git a/src/Diagrams/Backend/Cairo/Internal.hs b/src/Diagrams/Backend/Cairo/Internal.hs
--- a/src/Diagrams/Backend/Cairo/Internal.hs
+++ b/src/Diagrams/Backend/Cairo/Internal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                       #-}
 {-# LANGUAGE DeriveDataTypeable        #-}
 {-# LANGUAGE DeriveGeneric             #-}
 {-# LANGUAGE ExistentialQuantification #-}
@@ -178,9 +179,14 @@
 runC :: Render Cairo V2 Double -> RenderM ()
 runC (C r) = r
 
+instance Semigroup (Render Cairo V2 Double) where
+  C rd1 <> C rd2 = C (rd1 >> rd2)
+
 instance Monoid (Render Cairo V2 Double) where
   mempty  = C $ return ()
-  (C rd1) `mappend` (C rd2) = C (rd1 >> rd2)
+#if !(MIN_VERSION_base(4,11,0))
+  mappend = (<>)
+#endif
 
 instance Hashable (Options Cairo V2 Double) where
   hashWithSalt s (CairoOptions fn sz out adj)
