diff --git a/Graphics/Gloss/Data/Point.hs b/Graphics/Gloss/Data/Point.hs
--- a/Graphics/Gloss/Data/Point.hs
+++ b/Graphics/Gloss/Data/Point.hs
@@ -21,6 +21,7 @@
 	(+) (x1, y1) (x2, y2)	= (x1 + x2, y1 + y2)
  	(-) (x1, y1) (x2, y2)	= (x1 - x2, y1 - y2)
 	negate (x, y)		= (negate x, negate y)	
+        fromInteger x           = (fromInteger x, fromInteger x)
 
 
 -- | Test whether a point lies within a rectangular box that is oriented
diff --git a/Graphics/Gloss/Internals/Interface/Animate/Timing.hs b/Graphics/Gloss/Internals/Interface/Animate/Timing.hs
--- a/Graphics/Gloss/Internals/Interface/Animate/Timing.hs
+++ b/Graphics/Gloss/Internals/Interface/Animate/Timing.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE RankNTypes #-}
 {-# OPTIONS_HADDOCK hide #-}
 
 -- | Handles timing of animation.
diff --git a/Graphics/Gloss/Internals/Interface/Backend/GLFW.hs b/Graphics/Gloss/Internals/Interface/Backend/GLFW.hs
--- a/Graphics/Gloss/Internals/Interface/Backend/GLFW.hs
+++ b/Graphics/Gloss/Internals/Interface/Backend/GLFW.hs
@@ -280,13 +280,16 @@
                 <- setModifiers stateRef key keystate     
         let key'      = fromGLFW key
         let keystate' = if keystate then Down else Up
+        let isCharKey (Char _) = True
+            isCharKey _        = False
 
         -- Call the Gloss KeyMouse actions with the new state.
-        unless modsSet 
+        unless (modsSet || isCharKey key' && keystate)
          $ sequence_ 
          $ map  (\f -> f key' keystate' mods pos)
                 [f stateRef | KeyMouse f <- callbacks]
 
+
 setModifiers 
         :: IORef GLFWState
         -> GLFW.Key -> Bool
@@ -447,7 +450,8 @@
  go :: IO ()
  go = do windowIsOpen <- GLFW.windowIsOpen
          when windowIsOpen 
-          $ do  dirty <- fmap dirtyScreen $ readIORef stateRef
+          $ do  GLFW.pollEvents
+                dirty <- fmap dirtyScreen $ readIORef stateRef
 
                 when dirty
                  $ do   s <- readIORef stateRef
diff --git a/Graphics/Gloss/Internals/Interface/Common/Exit.hs b/Graphics/Gloss/Internals/Interface/Common/Exit.hs
--- a/Graphics/Gloss/Internals/Interface/Common/Exit.hs
+++ b/Graphics/Gloss/Internals/Interface/Common/Exit.hs
@@ -1,5 +1,5 @@
 {-# OPTIONS_HADDOCK hide #-}
-{-# LANGUAGE PatternGuards #-}
+{-# LANGUAGE PatternGuards, RankNTypes #-}
 
 -- | Callback for exiting the program.
 module Graphics.Gloss.Internals.Interface.Common.Exit
diff --git a/Graphics/Gloss/Internals/Interface/Simulate/Idle.hs b/Graphics/Gloss/Internals/Interface/Simulate/Idle.hs
--- a/Graphics/Gloss/Internals/Interface/Simulate/Idle.hs
+++ b/Graphics/Gloss/Internals/Interface/Simulate/Idle.hs
@@ -1,4 +1,5 @@
 {-# OPTIONS_HADDOCK hide #-}
+{-# LANGUAGE RankNTypes #-}
 
 module Graphics.Gloss.Internals.Interface.Simulate.Idle
 	( callback_simulate_idle )
diff --git a/Graphics/Gloss/Internals/Interface/ViewPort/KeyMouse.hs b/Graphics/Gloss/Internals/Interface/ViewPort/KeyMouse.hs
--- a/Graphics/Gloss/Internals/Interface/ViewPort/KeyMouse.hs
+++ b/Graphics/Gloss/Internals/Interface/ViewPort/KeyMouse.hs
@@ -1,5 +1,5 @@
 {-# OPTIONS_HADDOCK hide #-}
-{-# LANGUAGE PatternGuards #-}
+{-# LANGUAGE PatternGuards, RankNTypes #-}
 
 module Graphics.Gloss.Internals.Interface.ViewPort.KeyMouse
 	(callback_viewPort_keyMouse)
diff --git a/Graphics/Gloss/Internals/Interface/ViewPort/Motion.hs b/Graphics/Gloss/Internals/Interface/ViewPort/Motion.hs
--- a/Graphics/Gloss/Internals/Interface/ViewPort/Motion.hs
+++ b/Graphics/Gloss/Internals/Interface/ViewPort/Motion.hs
@@ -1,5 +1,5 @@
 {-# OPTIONS_HADDOCK hide #-}
-{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE ScopedTypeVariables, RankNTypes #-}
 
 module Graphics.Gloss.Internals.Interface.ViewPort.Motion
 	(callback_viewPort_motion)
diff --git a/gloss.cabal b/gloss.cabal
--- a/gloss.cabal
+++ b/gloss.cabal
@@ -1,5 +1,5 @@
 Name:                gloss
-Version:             1.7.4.1
+Version:             1.7.5.1
 License:             MIT
 License-file:        LICENSE
 Author:              Ben Lippmeier
@@ -37,8 +37,8 @@
   Build-Depends: 
         base       == 4.*,
         ghc-prim   == 0.2.*,
-        containers >= 0.3.0 && < 0.5.0,
-        bytestring == 0.9.*,
+        containers >= 0.3 && < 0.6,
+        bytestring >= 0.9 && < 0.11,
         OpenGL     == 2.5.*,
         GLUT       == 2.3.*,
         bmp        == 1.2.*
