diff --git a/diagrams-postscript.cabal b/diagrams-postscript.cabal
--- a/diagrams-postscript.cabal
+++ b/diagrams-postscript.cabal
@@ -1,5 +1,5 @@
 Name:                diagrams-postscript
-Version:             1.0.0.2
+Version:             1.0.1
 Synopsis:            Postscript backend for diagrams drawing EDSL
 Description:         This package provides a modular backend for rendering
                      diagrams created with the diagrams EDSL using Postscript.
@@ -40,6 +40,9 @@
                        split >= 0.1.2 && < 0.3,
                        monoid-extras >= 0.3 && < 0.4,
                        semigroups >= 0.3.4 && < 0.13,
-                       lens >= 3.8 && < 4
+                       lens >= 3.8 && < 4,
+                       hashable >= 1.1 && < 1.3
+  if impl(ghc < 7.6)
+    build-depends:     ghc-prim
   default-language:    Haskell2010
 
diff --git a/src/Diagrams/Backend/Postscript.hs b/src/Diagrams/Backend/Postscript.hs
--- a/src/Diagrams/Backend/Postscript.hs
+++ b/src/Diagrams/Backend/Postscript.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DeriveDataTypeable        #-}
+{-# LANGUAGE DeriveGeneric             #-}
 {-# LANGUAGE FlexibleContexts          #-}
 {-# LANGUAGE FlexibleInstances         #-}
 {-# LANGUAGE GADTs                     #-}
@@ -60,9 +61,11 @@
 import           Data.Maybe                    (catMaybes)
 
 import qualified Data.Foldable                 as F
+import           Data.Hashable                 (Hashable)
 import qualified Data.List.NonEmpty            as N
 import           Data.Monoid.Split
 import           Data.Typeable
+import           GHC.Generics                  (Generic)
 
 -- | This data declaration is simply used as a token to distinguish this rendering engine.
 data Postscript = Postscript
@@ -73,8 +76,10 @@
 -- | Postscript only supports EPS style output at the moment.  Future formats would each
 --   have their own associated properties that affect the output.
 data OutputFormat = EPS -- ^ Encapsulated Postscript output.
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Typeable)
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Typeable, Generic)
 
+instance Hashable OutputFormat
+
 instance Monoid (Render Postscript R2) where
   mempty  = C $ return ()
   (C x) `mappend` (C y) = C (x >> y)
@@ -88,7 +93,7 @@
           , _psSizeSpec     :: SizeSpec2D   -- ^ the requested size of the output
           , _psOutputFormat :: OutputFormat -- ^ the output format and associated options
           }
-    deriving Show
+    deriving (Show, Generic)
 
   withStyle _ s t (C r) = C $ do
     C.save
@@ -112,6 +117,8 @@
 
   adjustDia c opts d = adjustDia2D _psSizeSpec setPsSize c opts d
     where setPsSize sz o = o { _psSizeSpec = sz }
+
+instance Hashable (Options Postscript R2)
 
 sizeFromSpec :: SizeSpec2D -> (Double, Double)
 sizeFromSpec size = case size of
