diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+## [v1.4.1](https://github.com/diagrams/diagrams-rasterific/tree/v1.4.1) (2018-05-09)
+
+    - Bug fix: stroke entire paths at once ([#42](https://github.com/diagrams/diagrams-rasterific/issues/42))
+    - New `Semigroup (Render Rasterific V2 n)` instance
+    - Allow:
+        - `base-4.11` (GHC 8.4)
+        - `lens-4.16`
+
 ## [v1.4](https://github.com/diagrams/diagrams-rasterific/tree/v1.4) (2016-10-26)
 
 * **New features**
diff --git a/diagrams-rasterific.cabal b/diagrams-rasterific.cabal
--- a/diagrams-rasterific.cabal
+++ b/diagrams-rasterific.cabal
@@ -1,5 +1,5 @@
 name:                diagrams-rasterific
-version:             1.4
+version:             1.4.1
 synopsis:            Rasterific backend for diagrams.
 description:         A full-featured backend for rendering
                      diagrams using the Rasterific rendering engine.
@@ -13,8 +13,8 @@
 build-type:          Simple
 data-files:          fonts/*.ttf
 extra-source-files:  README.md, CHANGELOG.md
-tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
-cabal-version:       >=1.10
+tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.2
+cabal-version:       1.18
 Source-repository head
   type:     git
   location: http://github.com/diagrams/diagrams-rasterific.git
@@ -25,21 +25,43 @@
                        Diagrams.Backend.Rasterific.Text
   hs-source-dirs:      src
   other-modules:       Paths_diagrams_rasterific
-  build-depends:       base >= 4.2 && < 4.10,
+  build-depends:       base >= 4.2 && < 4.12,
                        diagrams-core >= 1.4 && < 1.5,
                        diagrams-lib >= 1.4 && < 1.5,
                        hashable >= 1.1 && < 1.3,
                        Rasterific >= 0.6.1 && < 0.8,
                        FontyFruity >= 0.5 && < 0.6,
                        JuicyPixels >= 3.1.5 && < 3.3,
-                       lens >= 4.0 && < 4.16,
+                       lens >= 4.0 && < 4.17,
                        mtl >= 2.1 && < 2.3,
                        data-default-class >= 0.0 && < 0.2,
                        containers >= 0.5 && < 0.6,
                        filepath >= 1.2 && < 1.5,
-                       optparse-applicative >= 0.13 && < 0.14,
+                       optparse-applicative >= 0.13 && < 0.15,
                        bytestring >= 0.9 && < 0.11,
                        file-embed >= 0.0 && < 0.1
 
   default-language:    Haskell2010
   ghc-options:         -Wall
+
+test-suite test0
+  type:                exitcode-stdio-1.0
+  main-is:             test0.hs
+  hs-source-dirs:      test
+  build-depends:       base >= 4.2 && < 4.12,
+                       diagrams-rasterific,
+                       diagrams-core >= 1.4 && < 1.5,
+                       diagrams-lib >= 1.4 && < 1.5
+  ghc-options:         -Wall
+  default-language:    Haskell2010
+
+test-suite test1
+  type:                exitcode-stdio-1.0
+  main-is:             test1.hs
+  hs-source-dirs:      test
+  build-depends:       base >= 4.2 && < 4.12,
+                       diagrams-rasterific,
+                       diagrams-core >= 1.4 && < 1.5,
+                       diagrams-lib >= 1.4 && < 1.5
+  ghc-options:         -Wall
+  default-language:    Haskell2010
diff --git a/src/Diagrams/Backend/Rasterific.hs b/src/Diagrams/Backend/Rasterific.hs
--- a/src/Diagrams/Backend/Rasterific.hs
+++ b/src/Diagrams/Backend/Rasterific.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE ConstraintKinds           #-}
+{-# LANGUAGE CPP                       #-}
 {-# LANGUAGE DeriveDataTypeable        #-}
 {-# LANGUAGE DeriveGeneric             #-}
 {-# LANGUAGE ExistentialQuantification #-}
@@ -201,9 +203,14 @@
 runR :: Render Rasterific V2 n -> RenderM n ()
 runR (R r) = r
 
+instance Semigroup (Render Rasterific V2 n) where
+  R rd1 <> R rd2 = R (rd1 >> rd2)
+
 instance Monoid (Render Rasterific V2 n) where
   mempty = R $ return ()
-  R rd1 `mappend` R rd2 = R (rd1 >> rd2)
+#if !MIN_VERSION_base(4,11,0)
+  mappend = (<>)
+#endif
 
 instance Hashable n => Hashable (Options Rasterific V2 n) where
   hashWithSalt s (RasterificOptions sz) = s `hashWithSalt` sz
@@ -332,8 +339,8 @@
 mkStroke :: TypeableFloat n => n ->  R.Join -> (R.Cap, R.Cap) -> Maybe (R.DashPattern, n)
       -> [[R.Primitive]] -> RenderR ()
 mkStroke (realToFrac -> l) j c d primList =
-  maybe (mapM_ (R.stroke l j c) primList)
-        (\(dsh, off) -> mapM_ (R.dashedStrokeWithOffset (realToFrac off) dsh l j c) primList)
+  maybe (R.stroke l j c $ concat primList)
+        (\(dsh, off) -> R.dashedStrokeWithOffset (realToFrac off) dsh l j c $ concat primList)
         d
 
 instance TypeableFloat n => Renderable (Path V2 n) Rasterific where
diff --git a/src/Diagrams/Backend/Rasterific/CmdLine.hs b/src/Diagrams/Backend/Rasterific/CmdLine.hs
--- a/src/Diagrams/Backend/Rasterific/CmdLine.hs
+++ b/src/Diagrams/Backend/Rasterific/CmdLine.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE ConstraintKinds   #-}
 {-# LANGUAGE CPP               #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE TemplateHaskell   #-}
diff --git a/src/Diagrams/Backend/Rasterific/Text.hs b/src/Diagrams/Backend/Rasterific/Text.hs
--- a/src/Diagrams/Backend/Rasterific/Text.hs
+++ b/src/Diagrams/Backend/Rasterific/Text.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE ConstraintKinds       #-}
 {-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE TypeFamilies          #-}
diff --git a/test/test0.hs b/test/test0.hs
new file mode 100644
--- /dev/null
+++ b/test/test0.hs
@@ -0,0 +1,14 @@
+import           Diagrams.Prelude
+import           Diagrams.Backend.Rasterific
+
+dia :: Diagram B
+dia = circle 35 # fc red
+   <> regPoly 16 200 # fc blue
+   <> regPoly 5 400 # fc orange # rotateBy (1/6)
+
+sizeSpec :: SizeSpec V2 Double
+sizeSpec = mkSizeSpec2D (Just 600) Nothing
+
+main :: IO ()
+main = renderRasterific "test0.png" sizeSpec dia
+  --(dia # translateX 0 # translateY (-300))
diff --git a/test/test1.hs b/test/test1.hs
new file mode 100644
--- /dev/null
+++ b/test/test1.hs
@@ -0,0 +1,20 @@
+import           Diagrams.Prelude
+import           Diagrams.Backend.Rasterific
+
+dia :: Diagram B
+dia = bgFrame 1 white $
+  vsep 0.5
+    [ l # lw thick
+    , l # lw thin
+    , l # lwG 0
+    ]
+  where
+    l = stroke (straight unitX `at` origin)
+
+sizeSpec :: SizeSpec V2 Double
+sizeSpec = mkSizeSpec2D (Just 600) Nothing
+
+main :: IO ()
+main = do
+  renderRasterific "test1.png" sizeSpec dia
+  renderRasterific "test1.pdf" sizeSpec dia
