diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index a3f38c2191a821d3be68df40cfc892439f0b9b37..b23eef0cb41d7d75259099a221e14f0cb7013696 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -970,6 +970,7 @@ BOOL zmodem_duplicate_callback(void *cbdata, void *zm_void)
     gettextinfo(&txtinfo);
 	buf=(char *)alloca(txtinfo.screenheight*txtinfo.screenwidth*2);
 	gettext(1,1,txtinfo.screenwidth,txtinfo.screenheight,buf);
+	window(1, 1, txtinfo.screenwidth, txtinfo.screenheight);
 	init_uifc(FALSE, FALSE);
 
 	while(loop) {
@@ -999,6 +1000,7 @@ BOOL zmodem_duplicate_callback(void *cbdata, void *zm_void)
 	}
 
 	uifcbail();
+	window(txtinfo.winleft, txtinfo.wintop, txtinfo.winright, txtinfo.winbottom);
 	puttext(1,1,txtinfo.screenwidth,txtinfo.screenheight,buf);
 	return(ret);
 }
@@ -1316,6 +1318,8 @@ BOOL xmodem_duplicate(xmodem_t *xm, struct bbslist *bbs, char *path, size_t path
     gettextinfo(&txtinfo);
 	buf=(char *)alloca(txtinfo.screenheight*txtinfo.screenwidth*2);
 	gettext(1,1,txtinfo.screenwidth,txtinfo.screenheight,buf);
+	window(1, 1, txtinfo.screenwidth, txtinfo.screenheight);
+
 	init_uifc(FALSE, FALSE);
 
 	while(loop) {
@@ -1348,6 +1352,7 @@ BOOL xmodem_duplicate(xmodem_t *xm, struct bbslist *bbs, char *path, size_t path
 
 	uifcbail();
 	puttext(1,1,txtinfo.screenwidth,txtinfo.screenheight,buf);
+	window(txtinfo.winleft, txtinfo.wintop, txtinfo.winright, txtinfo.winbottom);
 	return(ret);
 }