diff --git a/src/TaskTreeView.cs b/src/TaskTreeView.cs
index efeeadc..c59c3b8 100644
--- a/src/TaskTreeView.cs
+++ b/src/TaskTreeView.cs
@@ -108,7 +108,7 @@ namespace Tasque
 			column.Resizable = false;
 			column.Clickable = true;
 
-			renderer = new Gtk.CellRendererCombo ();
+			renderer = new CellRendererComboModified ();
 			(renderer as Gtk.CellRendererCombo).Editable = true;
 			(renderer as Gtk.CellRendererCombo).HasEntry = false;
 			SetCellRendererCallbacks ((CellRendererCombo) renderer, OnTaskPriorityEdited);
@@ -179,7 +179,7 @@ namespace Tasque
 			column.Resizable = false;
 			column.Clickable = true;
 
-			renderer = new Gtk.CellRendererCombo ();
+			renderer = new CellRendererComboModified ();
 			(renderer as Gtk.CellRendererCombo).Editable = true;
 			(renderer as Gtk.CellRendererCombo).HasEntry = false;
 			SetCellRendererCallbacks ((CellRendererCombo) renderer, OnDateEdited);
@@ -948,6 +948,23 @@ namespace Tasque
 			}
 	
 		}
+
+		// Ugly hack to fix bug #557792
+		private class CellRendererComboModified : Gtk.CellRendererCombo
+		{
+			private Gtk.ComboBox combo = null;
+			protected override void OnEditingStarted(CellEditable editable, string path)
+			{
+				combo = editable as Gtk.ComboBox;
+			}
+
+			protected override void OnEditingCanceled()
+			{
+				// The core of the ugliness, force the combo box to close
+				if (combo != null)
+					combo.Popdown ();
+			}
+		}
 		#endregion // Private Classes
 	}
 }
