diff --git a/Modules/cstubs b/Modules/cstubs
index 139ab96..cf301f9 100644
--- a/Modules/cstubs
+++ b/Modules/cstubs
@@ -587,12 +587,15 @@
 		return NULL;
 	if (!getiobjectarg(args, 5, 4, &s))
 		return NULL;
+#if 0
+/* Don't check this, it breaks experiments with pixmode(PM_SIZE, ...) */
 	pixcount = (long)(x2+1-x1) * (long)(y2+1-y1);
 	if (!is_stringobject(s) || getstringsize(s) != pixcount*sizeof(long)) {
-		fprintf(stderr, "string arg to lrectwrite has wrong size\n");
-		err_badarg();
+		err_setstr(RuntimeError,
+			   "string arg to lrectwrite has wrong size");
 		return NULL;
 	}
+#endif
 	lrectwrite( x1 , y1 , x2 , y2 , (unsigned long *) parray );
 	INCREF(None);
 	return None;
@@ -675,8 +678,8 @@
 	packedcount = ((width+packfactor-1)/packfactor) *
 		((height+packfactor-1)/packfactor);
 	if (getstringsize(unpacked) != pixcount*sizeof(long)) {
-		fprintf(stderr, "string arg to packrect has wrong size\n");
-		err_badarg();
+		err_setstr(RuntimeError,
+			   "string arg to packrect has wrong size");
 		return NULL;
 	}
 	packed = newsizedstringobject((char *)NULL, packedcount);
@@ -690,7 +693,7 @@
 			r = pixel & 0xff;
 			g = (pixel >> 8) & 0xff;
 			b = (pixel >> 16) & 0xff;
-			*p++ = (r+g+b) / 3;
+			*p++ = (30*r+59*g+11*b) / 100;
 		}
 	}
 	return packed;
@@ -736,8 +739,8 @@
 	packedcount = ((width+packfactor-1)/packfactor) *
 		((height+packfactor-1)/packfactor);
 	if (getstringsize(packed) != packedcount) {
-		fprintf(stderr, "string arg to unpackrect has wrong size\n");
-		err_badarg();
+		err_setstr(RuntimeError,
+			   "string arg to unpackrect has wrong size");
 		return NULL;
 	}
 	unpacked = newsizedstringobject((char *)NULL, pixcount*sizeof(long));
