diff --git a/Graphics/UI/Gtk/Cairo.chs b/Graphics/UI/Gtk/Cairo.chs
--- a/Graphics/UI/Gtk/Cairo.chs
+++ b/Graphics/UI/Gtk/Cairo.chs
@@ -52,11 +52,11 @@
   -- * Functions for the 'Render' monad.
 #if GTK_MAJOR_VERSION < 3
   renderWithDrawable,
-  region,
 #else
   getClipRectangle,
   renderWithDrawWindow,
 #endif
+  region,
   setSourceColor,
   setSourcePixbuf,
   rectangle,
@@ -171,16 +171,12 @@
       cr
       (castPtr rectPtr)
 
-#if GTK_MAJOR_VERSION < 3
 -- | Adds the given region to the current path of the 'Render' context.
---
--- Removed in Gtk3.
 region :: Region -> Render ()
 region region = Render $ do
   cr <- ask
   liftIO $ {# call unsafe gdk_cairo_region #}
     cr
     region
-#endif
 
 #endif
diff --git a/Graphics/UI/Gtk/Embedding/Types.chs b/Graphics/UI/Gtk/Embedding/Types.chs
--- a/Graphics/UI/Gtk/Embedding/Types.chs
+++ b/Graphics/UI/Gtk/Embedding/Types.chs
@@ -42,7 +42,8 @@
 
 #if (defined(HAVE_PLUG_AND_SOCKET) && (!defined(WIN32) || GTK_CHECK_VERSION(2,8,0))) || defined(GDK_WINDOWING_X11)
 import Foreign.ForeignPtr (ForeignPtr, castForeignPtr)
-#if __GLASGOW_HASKELL__ >= 707
+-- TODO work around cpphs https://ghc.haskell.org/trac/ghc/ticket/13553
+#if __GLASGOW_HASKELL__ >= 707 || __GLASGOW_HASKELL__ == 0
 import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
 #else
 import Foreign.ForeignPtr (unsafeForeignPtrToPtr)
diff --git a/Graphics/UI/Gtk/Gdk/EventM.hsc b/Graphics/UI/Gtk/Gdk/EventM.hsc
--- a/Graphics/UI/Gtk/Gdk/EventM.hsc
+++ b/Graphics/UI/Gtk/Gdk/EventM.hsc
@@ -98,6 +98,13 @@
 --   you can (and usually have to) use @liftIO@ to execute @IO@ functions.
 --
 
+-- * Classes
+
+  HasCoordinates,
+  HasRootCoordinates,
+  HasModifier,
+  HasTime,
+
 -- * Event monad and type tags
   EventM,
   EAny,
diff --git a/Graphics/UI/Gtk/Types.chs b/Graphics/UI/Gtk/Types.chs
--- a/Graphics/UI/Gtk/Types.chs
+++ b/Graphics/UI/Gtk/Types.chs
@@ -813,11 +813,13 @@
   ) where
 
 import Foreign.ForeignPtr (ForeignPtr, castForeignPtr)
-#if __GLASGOW_HASKELL__ >= 707
+-- TODO work around cpphs https://ghc.haskell.org/trac/ghc/ticket/13553
+#if __GLASGOW_HASKELL__ >= 707 || __GLASGOW_HASKELL__ == 0
 import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
 #else
 import Foreign.ForeignPtr (unsafeForeignPtrToPtr)
 #endif
+
 import Foreign.C.Types    (CULong(..), CUInt(..), CULLong(..))
 import System.Glib.GType  (GType, typeInstanceIsA)
 {#import System.Glib.GObject#}
diff --git a/gtk.cabal b/gtk.cabal
--- a/gtk.cabal
+++ b/gtk.cabal
@@ -1,5 +1,5 @@
 Name:           gtk
-Version:        0.14.6
+Version:        0.14.7
 License:        LGPL-2.1
 License-file:   COPYING
 Copyright:      (c) 2001-2010 The Gtk2Hs Team
@@ -135,7 +135,7 @@
 
 custom-setup
   setup-depends: base >= 4.6,
-                 Cabal >= 1.24 && < 1.25,
+                 Cabal >= 1.24 && < 2.1,
                  gtk2hs-buildtools >= 0.13.2.0 && < 0.14
 
 Library
@@ -382,7 +382,7 @@
         x-Signals-Import: Graphics.UI.Gtk.General.Threading
         include-dirs:   .
         cpp-options: -U__BLOCKS__
-        if os(darwin)
+        if os(darwin) || os(freebsd)
           cpp-options: -D__attribute__(A)= -D_Nullable= -D_Nonnull=
         if !flag(deprecated)
           cpp-options:  -DDISABLE_DEPRECATED
