diff --git a/src/syncterm/ripper.c b/src/syncterm/ripper.c
index e8864f0972c5ada08c300e81a68f09761823e39b..b5edc3490f44a489b4071f191c47c63734edc484 100644
--- a/src/syncterm/ripper.c
+++ b/src/syncterm/ripper.c
@@ -15585,7 +15585,7 @@ handle_rip_line(BYTE *buf, unsigned *blen, unsigned *pos, size_t *rip_start, uns
 	}
 	else if (strcmp(pending, "\x1b[2!") == 0) {
 		gettextinfo(&ti);
-		if (rip.version)
+		if (rip.version && (cio_api.options & CONIO_OPT_SET_PIXEL))
 			rip.enabled = true;
 	}
 	else if ((pending[0] == '\x1b') && (pending[1] == '[')) {
@@ -16051,7 +16051,7 @@ init_rip(struct bbslist *bbs)
 	memset(&rip, 0, sizeof(rip));
 	rip.state = RIP_STATE_BOL;
 	rip.newstate = RIP_STATE_FLUSHING;
-	rip.enabled = bbs->rip != RIP_VERSION_NONE;
+	rip.enabled = (bbs->rip != RIP_VERSION_NONE) && (cio_api.options & CONIO_OPT_SET_PIXEL);
 	rip.version = bbs->rip;
 	rip.x = 0;
 	rip.y = 0;
@@ -16067,15 +16067,17 @@ init_rip(struct bbslist *bbs)
 	rip.line_pattern = 0xffff;
 	rip.line_width = 1;
 	rip.x_dim = 640;
-	pthread_mutex_lock(&vstatlock);
-	rip.x_max = vstat.scrnwidth;
-	if (rip.x_max > rip.x_dim)
-		rip.x_max = rip.x_dim;
-	rip.y_dim = 350;
-	rip.y_max = vstat.scrnheight;
-	if (rip.y_max > rip.y_dim)
-		rip.y_max = rip.y_dim;
-	pthread_mutex_unlock(&vstatlock);
+	if (cio_api.options & CONIO_OPT_SET_PIXEL) {
+		pthread_mutex_lock(&vstatlock);
+		rip.x_max = vstat.scrnwidth;
+		if (rip.x_max > rip.x_dim)
+			rip.x_max = rip.x_dim;
+		rip.y_dim = 350;
+		rip.y_max = vstat.scrnheight;
+		if (rip.y_max > rip.y_dim)
+			rip.y_max = rip.y_dim;
+		pthread_mutex_unlock(&vstatlock);
+	}
 	rip.viewport.ex = rip.x_dim - 1;
 	rip.viewport.ey = rip.y_dim - 1;
 	rip.bbs = bbs;