diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c
index 0feff6a02204f89dc81b6fbcfedb59b9d9a43258..5a7c98f897fcf81650e0878bc2128a002f4c770d 100644
--- a/src/uifc/uifc32.c
+++ b/src/uifc/uifc32.c
@@ -1944,6 +1944,7 @@ void showbuf(int mode, int left, int top, int width, int height, char *title, ch
 	char inverse=0,high=0;
 	char *textbuf;
     char *p;
+	char *oldp=NULL;
 	int i,j,k,len;
 	int	 lines;
 	int pad=1;
@@ -2122,7 +2123,10 @@ void showbuf(int mode, int left, int top, int width, int height, char *title, ch
 	}
 	else {
 		while(i==0) {
-			puttext(left+1+pad,top+2+pad,left+width-2-pad,top+height-1-pad,p);
+			if(p!=oldp) {
+				puttext(left+1+pad,top+2+pad,left+width-2-pad,top+height-1-pad,p);
+				oldp=p;
+			}
 			if(kbwait()) {
 				j=inkey();
 				if(j==CIO_KEY_MOUSE) {