diff --git a/gtk/gtktoolitem.c b/gtk/gtktoolitem.c
index 606ce1e..4a5d440 100644
--- a/gtk/gtktoolitem.c
+++ b/gtk/gtktoolitem.c
@@ -327,8 +327,10 @@ gtk_tool_item_finalize (GObject *object)
 
   g_free (item->priv->menu_item_id);
 
-  if (item->priv->menu_item)
+  if (item->priv->menu_item) {
+    if (g_getenv ("GTK2_LEAK")) g_printerr ("DDD: %d\n", G_OBJECT (item->priv->menu_item)->ref_count);
     g_object_unref (item->priv->menu_item);
+  }
 
   G_OBJECT_CLASS (gtk_tool_item_parent_class)->finalize (object);
 }
@@ -338,10 +340,20 @@ gtk_tool_item_dispose (GObject *object)
 {
   GtkToolItem *item = GTK_TOOL_ITEM (object);
 
+  if (item->priv->menu_item) {
+    if (g_getenv ("GTK2_LEAK")) g_printerr ("EEE: %d\n", G_OBJECT (item->priv->menu_item)->ref_count);
+  }
+
   if (item->priv->action)
     {
       gtk_activatable_do_set_related_action (GTK_ACTIVATABLE (item), NULL);      
       item->priv->action = NULL;
+
+      if (item->priv->menu_item) {
+	if (g_getenv ("GTK2_LEAK")) g_printerr ("FFF: %d\n", G_OBJECT (item->priv->menu_item)->ref_count);
+	gtk_widget_destroy (item->priv->menu_item);
+	if (g_getenv ("GTK2_LEAK")) g_printerr ("GGG: %d\n", G_OBJECT (item->priv->menu_item)->ref_count);
+      }
     }
   G_OBJECT_CLASS (gtk_tool_item_parent_class)->dispose (object);
 }
@@ -583,7 +595,9 @@ _gtk_tool_item_create_menu_proxy (GtkToolItem *item)
 	  menu_item = gtk_action_create_menu_item (item->priv->action);
 
 	  g_object_ref_sink (menu_item);
+	  if (g_getenv ("GTK2_LEAK")) g_printerr ("AAA: %d\n", G_OBJECT (menu_item)->ref_count);
       	  gtk_tool_item_set_proxy_menu_item (item, "gtk-action-menu-item", menu_item);
+	  if (g_getenv ("GTK2_LEAK")) g_printerr ("BBB: %d\n", G_OBJECT (menu_item)->ref_count);
 	  g_object_unref (menu_item);
 	}
       else
@@ -1439,8 +1453,13 @@ gtk_tool_item_set_proxy_menu_item (GtkToolItem *tool_item,
   if (tool_item->priv->menu_item != menu_item)
     {
       if (tool_item->priv->menu_item)
-	g_object_unref (tool_item->priv->menu_item);
-      
+	{
+	  if (g_getenv ("GTK2_LEAK")) g_printerr ("CCC: %d\n", G_OBJECT (tool_item->priv->menu_item)->ref_count);
+	  gtk_widget_destroy (tool_item->priv->menu_item);
+	  if (g_getenv ("GTK2_LEAK")) g_printerr ("HHH: %d\n", G_OBJECT (tool_item->priv->menu_item)->ref_count);
+	  g_object_unref (tool_item->priv->menu_item);
+	}
+
       if (menu_item)
 	{
 	  g_object_ref_sink (menu_item);
