diff --git a/exec/load/sbbslist_lib.js b/exec/load/sbbslist_lib.js
index 7789987c197116620dbeb41fb31d0944c8490310..e4390adce2232fc2b363d56acc8fbcee4cd9eef0 100644
--- a/exec/load/sbbslist_lib.js
+++ b/exec/load/sbbslist_lib.js
@@ -581,17 +581,17 @@ function syncterm_list(list, dir)
 
 const base64_max_line_len = 72;
 
-function compress_preview(preview)
+function compress_preview(bin)
 {
-	var compressed = LZString.compressToBase64(base64_decode(preview.join("")));
-	return ["!LZ"].concat(compressed.match(new RegExp('([\x00-\xff]{0,' + base64_max_line_len + '})', 'g')));
+	var compressed = LZString.compressToBase64(bin);
+	return ["!LZ"].concat(compressed.match(new RegExp('([\x00-\xff]{1,' + base64_max_line_len + '})', 'g')));
 }
 
 function encode_preview(ansi_capture)
 {
 	var graphic = new Graphic();
 	graphic.ANSI = ansi_capture.join("\r\n");
-	return compress_preview(graphic.base64_encode());
+	return compress_preview(graphic.BIN);
 }
 
 function decode_preview(preview)
@@ -604,9 +604,14 @@ function decode_preview(preview)
 
 function draw_preview(bbs)
 {
+	if(!bbs.preview)
+		return false;
 	var graphic = new Graphic();
-	graphic.BIN = decode_preview(bbs.preview);
-	graphic.draw();
+	var bin = decode_preview(bbs.preview);
+	if(!bin || !bin.length)
+		return false;
+	graphic.BIN = bin;
+	return graphic.draw();
 }
 
 /* Leave as last line for convenient load() usage: */