diff --git a/src/sheet-control-gui-priv.h b/src/sheet-control-gui-priv.h
index 67a72ea..5beadbb 100644
--- a/src/sheet-control-gui-priv.h
+++ b/src/sheet-control-gui-priv.h
@@ -53,6 +53,7 @@ struct _SheetControlGUI {
 	struct {
 		GnmComment *selected;
 		GtkWidget   *item;	/* TODO : make this a canvas item with an arrow */
+		GtkWidget   *canvas;
 		int	     timer;
 		int          x, y;
 	} comment;
diff --git a/src/sheet-control-gui.c b/src/sheet-control-gui.c
index b8feb93..c241218 100644
--- a/src/sheet-control-gui.c
+++ b/src/sheet-control-gui.c
@@ -2984,17 +2984,14 @@ scg_comment_display (SheetControlGUI *scg, GnmComment *cc,
 
 	g_return_if_fail (IS_CELL_COMMENT (cc));
 
-	if (scg->comment.item == NULL) {
+	if (scg->comment.item == NULL && GTK_IS_WIDGET (scg->comment.canvas)) {
 		GtkWidget *text, *frame;
 		GtkTextBuffer *buffer;
-		GtkWindow *toplevel = wbcg_toplevel (scg_wbcg (scg));
-		GdkScreen *screen = gtk_window_get_screen (toplevel);
 		char *comment_text;
 		char const *comment_author;
 		PangoAttrList *comment_markup;
 
 		scg->comment.item = gtk_window_new (GTK_WINDOW_POPUP);
-		gtk_window_set_screen (GTK_WINDOW (scg->comment.item), screen);
 		gtk_window_move (GTK_WINDOW (scg->comment.item), x+10, y+10);
 
 		text = gtk_text_view_new ();
@@ -3029,6 +3026,7 @@ scg_comment_display (SheetControlGUI *scg, GnmComment *cc,
 
 		gtk_container_add (GTK_CONTAINER (scg->comment.item), frame);
 		gtk_container_add (GTK_CONTAINER (frame), text);
+		gtk_widget_set_tooltip_window (scg->comment.canvas, GTK_WINDOW (scg->comment.item));
 		gtk_widget_show_all (scg->comment.item);
 	}
 }
@@ -3053,7 +3051,7 @@ cb_cell_comment_timer (SheetControlGUI *scg)
  * Prepare @cc for display.
  */
 void
-scg_comment_select (SheetControlGUI *scg, GnmComment *cc, int x, int y)
+scg_comment_select (SheetControlGUI *scg, GtkWidget *w, GnmComment *cc, int x, int y)
 {
 	g_return_if_fail (IS_SHEET_CONTROL_GUI (scg));
 
@@ -3063,6 +3061,7 @@ scg_comment_select (SheetControlGUI *scg, GnmComment *cc, int x, int y)
 	g_return_if_fail (scg->comment.timer == -1);
 
 	scg->comment.selected = cc;
+	scg->comment.canvas = w;
 	scg->comment.timer = g_timeout_add (1000,
 		(GSourceFunc)cb_cell_comment_timer, scg);
 	scg->comment.x = x;
@@ -3087,9 +3086,11 @@ scg_comment_unselect (SheetControlGUI *scg, GnmComment *cc)
 		scg_comment_timer_clear (scg);
 
 		if (scg->comment.item != NULL) {
+			gtk_widget_set_tooltip_window (scg->comment.canvas, NULL);
 			gtk_widget_destroy (scg->comment.item);
 			scg->comment.item = NULL;
 		}
+		scg->comment.canvas = NULL;
 	}
 }
 
diff --git a/src/sheet-control-gui.h b/src/sheet-control-gui.h
index 63a84a7..c8619e8 100644
--- a/src/sheet-control-gui.h
+++ b/src/sheet-control-gui.h
@@ -44,7 +44,7 @@ void scg_object_select		(SheetControlGUI *scg, SheetObject *so);
 void scg_object_unselect	(SheetControlGUI *scg, SheetObject *so);
 void scg_object_select_next	(SheetControlGUI *scg, gboolean reverse);
 
-void scg_comment_select		(SheetControlGUI *scg, GnmComment *cc,
+void scg_comment_select		(SheetControlGUI *scg, GtkWidget *w, GnmComment *cc,
 				 int x, int y);
 void scg_comment_display	(SheetControlGUI *scg, GnmComment *cc,
 				 int x, int y);
diff --git a/src/sheet-object-cell-comment.c b/src/sheet-object-cell-comment.c
index b2bd99e..da6e8b4 100644
--- a/src/sheet-object-cell-comment.c
+++ b/src/sheet-object-cell-comment.c
@@ -150,6 +150,7 @@ comment_view_enter_notify (GocItem *item, double x, double y)
 	so = sheet_object_view_get_so (SHEET_OBJECT_VIEW (item));
 
 	scg_comment_select (GNM_PANE (item->canvas)->simple.scg,
+	                    item->canvas,
 			    CELL_COMMENT (so),
 			    ix, iy);
 	return TRUE;

