diff --git a/share/mk/doc.docbook.mk b/share/mk/doc.docbook.mk
index 6c06d71a9b..4a73e00557 100644
--- a/share/mk/doc.docbook.mk
+++ b/share/mk/doc.docbook.mk
@@ -93,6 +93,10 @@
 #       RLE             Use Run-Length Encoding for EPS files, this will
 #                       result in signficiantly smaller PostScript files, 
 #                       but may take longer for a printer to process.
+#
+#       GREYSCALE_IMAGES Convert the screenshots to greyscale before
+#                        embedding them into the PostScript output.
+#
 
 #
 # Documents should use the += format to access these.
diff --git a/share/mk/doc.images.mk b/share/mk/doc.images.mk
index c08e2dc510..add98eaffa 100644
--- a/share/mk/doc.images.mk
+++ b/share/mk/doc.images.mk
@@ -138,6 +138,8 @@ EPS2PNG?=	${PREFIX}/bin/peps
 EPS2PNGOPTS?=	-p -r ${EPS2PNG_RES} ${EPS2PNGFLAGS}
 PNGTOPNM?=	${PREFIX}/bin/pngtopnm
 PNGTOPNMOPTS?=	${PNGTOPNMFLAGS}
+PPMTOPGM?=	${PREFIX}/bin/ppmtopgm
+PPMTOPGMOPTS?=	${PPMTOPGMFLAGS}
 PNMTOPS?=	${PREFIX}/bin/pnmtops
 PNMTOPSOPTS?=	-noturn ${PNMTOPSFLAGS}
 EPSTOPDF?=	${PREFIX}/bin/epstopdf
@@ -155,10 +157,19 @@ REALPATH?=	/bin/realpath
 .scr.png:
 	${SCR2PNG} ${SCR2PNGOPTS} < ${.IMPSRC} > ${.TARGET}
 
+## If we want grayscale, convert with ppmtopgm before running through pnmtops
+.if defined(GREYSCALE_IMAGES)
+.scr.eps:
+	${SCR2PNG} ${SCR2PNGOPTS} < ${.ALLSRC} | \
+		${PNGTOPNM} ${PNGTOPNMOPTS} | \
+		${PPMTOPGM} ${PPMTOPGMOPTS} | \
+		${PNMTOPS} ${PNMTOPSOPTS} > ${.TARGET}
+.else
 .scr.eps:
 	${SCR2PNG} ${SCR2PNGOPTS} < ${.ALLSRC} | \
 		${PNGTOPNM} ${PNGTOPNMOPTS} | \
 		${PNMTOPS} ${PNMTOPSOPTS} > ${.TARGET}
+.endif
 
 # The .txt files need to have any trailing spaces trimmed from
 # each line, which is why the output from ${SCR2TXT} is run