diff --git a/ChangeLog b/ChangeLog
index d8cd923aa..96cf88d65 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2004-06-09  Todd Berman  <tberman@sevenl.net>
+
+	* gdk/Gdk.metadata: mark Window.SetBackPixmap as null_ok.
+	* glib/Object.cs: in set_Raw, if value == IntPtr.Zero, dont put that
+	in the weakref hashtable, as it creates later issues with gtk+
+	returning null and gtk# mistaking if for an object.
+
 2004-06-08  Mike Kestner  <mkestner@ximian.com>
 
 	* gnomedb/Application.cs : add a missing DllImport.
diff --git a/gdk/Gdk.metadata b/gdk/Gdk.metadata
index 82e32d5d2..c90fbdad8 100644
--- a/gdk/Gdk.metadata
+++ b/gdk/Gdk.metadata
@@ -79,6 +79,7 @@
   <attr path="/api/namespace/object[@cname='GdkWindow']/method[@name='SetIconList']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GdkWindow']/method[@name='GetUserData']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GdkWindow']/method[@cname='gdk_window_set_user_data']" name="hidden">1</attr>
+  <attr path="/api/namespace/object[@cname='GdkWindow']/method[@cname='gdk_window_set_back_pixmap']/*/*[@name='pixmap']" name="null_ok">1</attr>
   <attr path="/api/namespace/struct[@cname='GdkEventAny']" name="hidden">1</attr>
   <attr path="/api/namespace/struct[@cname='GdkEventButton']" name="hidden">1</attr>
   <attr path="/api/namespace/struct[@cname='GdkEventClient']" name="hidden">1</attr>
diff --git a/glib/Object.cs b/glib/Object.cs
index a6b7c0d46..ebc6f8e88 100644
--- a/glib/Object.cs
+++ b/glib/Object.cs
@@ -182,8 +182,10 @@ namespace GLib {
 				return _obj;
 			}
 			set {
-				Objects [value] = new WeakReference (this);
 				_obj = value;
+				if (value == IntPtr.Zero)
+					return;
+				Objects [value] = new WeakReference (this);
 			}
 		}