diff --git a/gi-gtk-hs.cabal b/gi-gtk-hs.cabal
--- a/gi-gtk-hs.cabal
+++ b/gi-gtk-hs.cabal
@@ -1,5 +1,5 @@
 name:                gi-gtk-hs
-version:             0.3.9
+version:             0.3.10
 synopsis:            A wrapper for gi-gtk, adding a few more idiomatic API parts on top
 description:         A wrapper for gi-gtk, adding a few more idiomatic API parts on top
 homepage:            https://github.com/haskell-gi/haskell-gi
@@ -34,7 +34,7 @@
                        transformers >=0.3.0.0 && <0.6,
                        containers >=0.5.5.1 && <0.7,
                        text >=1.2 && <1.3,
-                       haskell-gi-base >=0.24.0 && <0.25,
+                       haskell-gi-base >=0.25.0 && <0.26,
                        gi-glib >=2.0.6 && <2.1,
                        gi-gobject >=2.0.6 && <2.1,
                        gi-gdk >= 3.0.6 && <3.1,
diff --git a/src/Data/GI/Gtk/ModelView/CustomStore.hs b/src/Data/GI/Gtk/ModelView/CustomStore.hs
--- a/src/Data/GI/Gtk/ModelView/CustomStore.hs
+++ b/src/Data/GI/Gtk/ModelView/CustomStore.hs
@@ -517,7 +517,7 @@
   model <- newObject TreeModel mPtr
   store <- customTreeDragSourceIface <$> deRefStablePtr storePtr
   path <- treePathCopy . TreePath =<< newManagedPtr_ pathPtr
-  selection <- selectionDataCopy . SelectionData =<< newManagedPtr_ selectionPtr
+  selection <- SelectionData <$> newManagedPtr_ selectionPtr
   fromBool <$> customDragSourceDragDataGet store (unsafeTreeModelToGeneric model) path selection
 
 foreign export ccall "gtk2hs_store_drag_data_get_impl"
diff --git a/src/Data/GI/Gtk/ModelView/TreeModel.hs b/src/Data/GI/Gtk/ModelView/TreeModel.hs
--- a/src/Data/GI/Gtk/ModelView/TreeModel.hs
+++ b/src/Data/GI/Gtk/ModelView/TreeModel.hs
@@ -120,8 +120,8 @@
 import Prelude.Compat
 import Data.Int (Int32)
 import Data.Text (Text)
-import Data.GI.Base.GValue (fromGValue, get_object)
-import Data.GI.Base.ManagedPtr (newObject)
+import Data.GI.Base.GValue (GValue(..), fromGValue, get_object)
+import Data.GI.Base.ManagedPtr (withManagedPtr, newObject)
 import Foreign.Ptr (Ptr)
 import GI.GdkPixbuf.Objects.Pixbuf (Pixbuf(..))
 import GI.Gtk.Structs.TreeIter (TreeIter)
@@ -152,7 +152,11 @@
 
 -- | Create a 'ColumnId' to extract an 'Pixbuf'.
 makeColumnIdPixbuf :: Int32 -> ColumnId row Pixbuf
-makeColumnIdPixbuf = ColumnId (\v -> (get_object v :: IO (Ptr Pixbuf)) >>= newObject Pixbuf) CAPixbuf
+makeColumnIdPixbuf = ColumnId gvalueToPixbuf CAPixbuf
+  where gvalueToPixbuf :: GValue -> IO Pixbuf
+        gvalueToPixbuf gv = withManagedPtr gv $ \gvPtr -> do
+          objPtr <- get_object gvPtr :: IO (Ptr Pixbuf)
+          newObject Pixbuf objPtr
 
 -- | Convert a 'ColumnId' to a bare number.
 columnIdToNumber :: ColumnId row ty -> Int32
