diff --git a/pdf.c b/pdf.c
index 40223ec66a066ad2310fa8f2108d9a02c0ec46a8..b46e3f0acf7f177b8f740c9fd1e75a7be8c2b4c5 100644
--- a/pdf.c
+++ b/pdf.c
@@ -1072,7 +1072,7 @@ ASCIIHexDecode(const Dict *parms, HBytes b, HParser *p)
 	H_ARULE(hupper,	h_ch_range('A', 'F'));
 	H_RULE(ahexeod,	h_ch('>'));
 	H_RULE(hdigit,	CHX(digit, hlower, hupper));
-	H_RULE(hdigitpair, SEQ(h_many(CHX(lwchar,hdigit)),h_many(CHX(lwchar,hdigit))));
+	H_RULE(hdigitpair, SEQ(OPT(h_many(lwchar)),hdigit,OPT(h_many(lwchar)),hdigit));
 	H_ARULE(ahextruncated, SEQ(hdigit,ahexeod));
 
 	H_RULE(hs_end, CHX(hdigitpair, ahextruncated));