diff --git a/Graphics/UI/SDL/Utilities.hs b/Graphics/UI/SDL/Utilities.hs
--- a/Graphics/UI/SDL/Utilities.hs
+++ b/Graphics/UI/SDL/Utilities.hs
@@ -30,10 +30,10 @@
 intToBool err action
     = fmap (err/=) action
 
-toBitmask :: (Enum a b,Bits b) => [a] -> b
+toBitmask :: (Enum a b,Bits b,Num b) => [a] -> b
 toBitmask = foldr (.|.) 0 . map fromEnum
 
-fromBitmask :: (Bounded a,Enum a b,Bits b) => b -> [a]
+fromBitmask :: (Bounded a,Enum a b,Bits b,Num b) => b -> [a]
 fromBitmask mask = foldr worker [] lst
     where lst = enumFromTo minBound maxBound
           worker v
diff --git a/Graphics/UI/SDL/Video.hsc b/Graphics/UI/SDL/Video.hsc
--- a/Graphics/UI/SDL/Video.hsc
+++ b/Graphics/UI/SDL/Video.hsc
@@ -83,7 +83,7 @@
 
 import Foreign (Ptr, FunPtr, Storable(peek), castPtr, plusPtr, nullPtr, newForeignPtr_,
                finalizeForeignPtr, alloca, withForeignPtr, newForeignPtr)
-import Foreign.C (peekCString, CString, CInt())
+import Foreign.C (peekCString, CString, CInt(..))
 import Foreign.Marshal.Array (withArrayLen, peekArray0, peekArray, allocaArray)
 import Foreign.Marshal.Utils (with, toBool, maybeWith, maybePeek, fromBool)
 import Control.Exception (bracket)
diff --git a/Graphics/UI/SDL/WindowManagement.hsc b/Graphics/UI/SDL/WindowManagement.hsc
--- a/Graphics/UI/SDL/WindowManagement.hsc
+++ b/Graphics/UI/SDL/WindowManagement.hsc
@@ -25,8 +25,9 @@
     , queryGrabMode
     ) where
 
+import Control.Monad (void)
 import Foreign (Int32, Ptr, Storable(peek), nullPtr, toBool, maybePeek,
-                void, alloca, withForeignPtr)
+                alloca, withForeignPtr)
 import Foreign.C (withCString, peekCString, CString)
 
 import Graphics.UI.SDL.Types (Surface, SurfaceStruct)
diff --git a/SDL.cabal b/SDL.cabal
--- a/SDL.cabal
+++ b/SDL.cabal
@@ -1,6 +1,6 @@
 Cabal-Version:      >= 1.6
 Name:               SDL
-Version:            0.6.3
+Version:            0.6.4
 Maintainer:         Lemmih (lemmih@gmail.com)
 Author:             Lemmih (lemmih@gmail.com)
 Copyright:          2004-2010, Lemmih
