diff --git a/Graphics/Gloss/Data/Color.hs b/Graphics/Gloss/Data/Color.hs
--- a/Graphics/Gloss/Data/Color.hs
+++ b/Graphics/Gloss/Data/Color.hs
@@ -27,14 +27,16 @@
 	, rose,   violet, azure, aquamarine, chartreuse, orange
 	)
 where
+import Data.Data
 
+
 -- | An abstract color value.
 --	We keep the type abstract so we can be sure that the components
 --	are in the required range. To make a custom color use 'makeColor'.
 data Color
 	-- | Holds the color components. All components lie in the range [0..1.
 	= RGBA  !Float !Float !Float !Float
-	deriving (Show, Eq)
+	deriving (Show, Eq, Data, Typeable)
 
 
 instance Num Color where
diff --git a/Graphics/Gloss/Data/Picture.hs b/Graphics/Gloss/Data/Picture.hs
--- a/Graphics/Gloss/Data/Picture.hs
+++ b/Graphics/Gloss/Data/Picture.hs
@@ -51,6 +51,7 @@
 import Data.Word
 import Data.Monoid
 import Data.ByteString
+import Data.Data
 import System.IO.Unsafe
 import qualified Data.ByteString.Unsafe as BSU
 import Prelude hiding (map)
@@ -117,7 +118,7 @@
 	-- More Pictures ----------------------------------
 	-- | A picture consisting of several others.
 	| Pictures	[Picture]
-	deriving (Show, Eq)
+	deriving (Show, Eq, Data, Typeable)
 
 
 -- Instances ------------------------------------------------------------------
diff --git a/Graphics/Gloss/Internals/Render/Bitmap.hs b/Graphics/Gloss/Internals/Render/Bitmap.hs
--- a/Graphics/Gloss/Internals/Render/Bitmap.hs
+++ b/Graphics/Gloss/Internals/Render/Bitmap.hs
@@ -8,6 +8,7 @@
 	, freeBitmapData
 	)
 where
+import Data.Data
 import Foreign
 
 
@@ -16,7 +17,7 @@
         = BitmapData 
                 Int                     -- length (in bytes)
                 (ForeignPtr Word8)      -- pointer to data
-        deriving (Eq)
+        deriving (Eq, Data, Typeable)
 
 
 instance Show BitmapData where
diff --git a/gloss.cabal b/gloss.cabal
--- a/gloss.cabal
+++ b/gloss.cabal
@@ -1,5 +1,5 @@
 Name:                gloss
-Version:             1.7.8.3
+Version:             1.7.8.4
 License:             MIT
 License-file:        LICENSE
 Author:              Ben Lippmeier
@@ -95,6 +95,9 @@
         Graphics.Gloss.Internals.Interface.Simulate
         Graphics.Gloss.Internals.Interface.Game
         Graphics.Gloss.Internals.Interface.Backend
+
+  Extensions:
+        DeriveDataTypeable
 
   If flag(GLUT)
     CPP-Options: -DWITHGLUT
