diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,15 @@
+## [v1.4.1.1](https://github.com/diagrams/diagrams-rasterific/tree/v1.4.1.1) (2018-10-12)
+
+- Require `Rasterific-0.7.4` to
+  - fix PDF rendering of zero-width paths ([#43](https://github.com/diagrams/diagrams-rasterific/issues/43))
+  - fix disappearing small elements ([#51](https://github.com/diagrams/diagrams-rasterific/issues/51))
+
+- Allow:
+    - `base-4.12` (GHC 8.6)
+    - `lens-4.17`
+    - `containers-0.6`
+    - `JuicyPixels-3.3`
+
 ## [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))
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.1
+version:             1.4.1.1
 synopsis:            Rasterific backend for diagrams.
 description:         A full-featured backend for rendering
                      diagrams using the Rasterific rendering engine.
@@ -13,7 +13,7 @@
 build-type:          Simple
 data-files:          fonts/*.ttf
 extra-source-files:  README.md, CHANGELOG.md
-tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.2
+tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.6.1
 cabal-version:       1.18
 Source-repository head
   type:     git
@@ -25,17 +25,17 @@
                        Diagrams.Backend.Rasterific.Text
   hs-source-dirs:      src
   other-modules:       Paths_diagrams_rasterific
-  build-depends:       base >= 4.2 && < 4.12,
+  build-depends:       base >= 4.2 && < 4.13,
                        diagrams-core >= 1.4 && < 1.5,
                        diagrams-lib >= 1.4 && < 1.5,
                        hashable >= 1.1 && < 1.3,
-                       Rasterific >= 0.6.1 && < 0.8,
+                       Rasterific >= 0.7.4 && < 0.8,
                        FontyFruity >= 0.5 && < 0.6,
-                       JuicyPixels >= 3.1.5 && < 3.3,
-                       lens >= 4.0 && < 4.17,
+                       JuicyPixels >= 3.1.5 && < 3.4,
+                       lens >= 4.0 && < 4.18,
                        mtl >= 2.1 && < 2.3,
                        data-default-class >= 0.0 && < 0.2,
-                       containers >= 0.5 && < 0.6,
+                       containers >= 0.5 && < 0.7,
                        filepath >= 1.2 && < 1.5,
                        optparse-applicative >= 0.13 && < 0.15,
                        bytestring >= 0.9 && < 0.11,
@@ -44,22 +44,33 @@
   default-language:    Haskell2010
   ghc-options:         -Wall
 
-test-suite test0
+test-suite test-render
   type:                exitcode-stdio-1.0
-  main-is:             test0.hs
+  main-is:             test-render.hs
   hs-source-dirs:      test
-  build-depends:       base >= 4.2 && < 4.12,
+  build-depends:       base >= 4.2 && < 4.13,
                        diagrams-rasterific,
                        diagrams-core >= 1.4 && < 1.5,
                        diagrams-lib >= 1.4 && < 1.5
   ghc-options:         -Wall
   default-language:    Haskell2010
 
-test-suite test1
+test-suite test-widths
   type:                exitcode-stdio-1.0
-  main-is:             test1.hs
+  main-is:             test-widths.hs
   hs-source-dirs:      test
-  build-depends:       base >= 4.2 && < 4.12,
+  build-depends:       base >= 4.2 && < 4.13,
+                       diagrams-rasterific,
+                       diagrams-core >= 1.4 && < 1.5,
+                       diagrams-lib >= 1.4 && < 1.5
+  ghc-options:         -Wall
+  default-language:    Haskell2010
+
+test-suite test-size
+  type:                exitcode-stdio-1.0
+  main-is:             test-size.hs
+  hs-source-dirs:      test
+  build-depends:       base >= 4.2 && < 4.13,
                        diagrams-rasterific,
                        diagrams-core >= 1.4 && < 1.5,
                        diagrams-lib >= 1.4 && < 1.5
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
@@ -448,7 +448,21 @@
     _      -> writePng outFile img
   where
     img = renderDia Rasterific (RasterificOptions spec) d
-    V2 w h = specToSize 100 spec
+    (w, h) = specToDims (aspectRatio d) spec
+
+aspectRatio :: (V a ~ V2, Enveloped a) => a -> N a
+aspectRatio d = h / w
+  where
+    V2 w h = boxExtents (boundingBox d)
+
+specToDims :: (Fractional a, Ord a) => a -> SizeSpec V2 a -> (a, a)
+specToDims ar s =
+  case getSpec s of
+    V2 (Just w) (Just h) -> (w, h)
+    V2 (Just w) Nothing  -> (w, ar * w)
+    V2 Nothing (Just h)  -> (h / ar, h)
+    V2 Nothing Nothing   -> (100, 100)
+
 
 -- | Render a 'Rasterific' diagram to an animated gif with the given
 --   size and uniform delay. Diagrams should be the same size.
diff --git a/test/test-render.hs b/test/test-render.hs
new file mode 100644
--- /dev/null
+++ b/test/test-render.hs
@@ -0,0 +1,13 @@
+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 "test-render.png" sizeSpec dia
diff --git a/test/test-size.hs b/test/test-size.hs
new file mode 100644
--- /dev/null
+++ b/test/test-size.hs
@@ -0,0 +1,20 @@
+import           Diagrams.Prelude
+import           Diagrams.Backend.Rasterific
+
+{- non-square diagram should yield non-square output -}
+
+dia :: Diagram B
+dia = ellipseXY 1 1.5
+
+sizeSpec :: SizeSpec V2 Double
+sizeSpec = mkSizeSpec2D (Just 200) Nothing
+
+sizeSpecBoth :: SizeSpec V2 Double
+sizeSpecBoth = mkSizeSpec2D (Just 200) (Just 300)
+
+main :: IO ()
+main = do
+  renderRasterific "test-size.png" sizeSpec dia
+  renderRasterific "test-size.pdf" sizeSpec dia
+  renderRasterific "test-size-both.png" sizeSpecBoth dia
+  renderRasterific "test-size-both.pdf" sizeSpecBoth dia
diff --git a/test/test-widths.hs b/test/test-widths.hs
new file mode 100644
--- /dev/null
+++ b/test/test-widths.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 "test-widths.png" sizeSpec dia
+  renderRasterific "test-widths.pdf" sizeSpec dia
diff --git a/test/test0.hs b/test/test0.hs
deleted file mode 100644
--- a/test/test0.hs
+++ /dev/null
@@ -1,14 +0,0 @@
-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
deleted file mode 100644
--- a/test/test1.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-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
