diff --git a/controls/edit.c b/controls/edit.c
index d1f02e25824f2d8ba3563b0f1ef75b5fb78937df..e95929977cfe6416f614e71135f6220b862b39c8 100644
--- a/controls/edit.c
+++ b/controls/edit.c
@@ -2981,18 +2981,19 @@ static void EDIT_EM_ReplaceSel(EDITSTATE *es, BOOL can_undo, LPCWSTR lpsz_replac
 	EDIT_EM_SetSel(es, s, s, FALSE);
 	es->flags |= EF_MODIFIED;
 	if (send_update) es->flags |= EF_UPDATE;
-	EDIT_EM_ScrollCaret(es);
-
-	/* force scroll info update */
-	EDIT_UpdateScrollInfo(es);
-
 	if (hrgn)
 	{
 		EDIT_UpdateTextRegion(es, hrgn, TRUE);
 		DeleteObject(hrgn);
 	}
 	else
-	EDIT_UpdateText(es, NULL, TRUE);
+            EDIT_UpdateText(es, NULL, TRUE);
+
+	EDIT_EM_ScrollCaret(es);
+
+	/* force scroll info update */
+	EDIT_UpdateScrollInfo(es);
+
 
 	if(es->flags & EF_UPDATE)
 	{