diff --git a/src/pprint.c b/src/pprint.c
index 7d944b857af011b02ce9a698c81981217c57dcf8..145bf5237ae98e7db240aa1540bf8b242801edd1 100644
--- a/src/pprint.c
+++ b/src/pprint.c
@@ -23,7 +23,6 @@
 #include "internal.h"
 #include <stdlib.h>
 #include <inttypes.h>
-#include <ctype.h>
 
 typedef struct pp_state {
   int delta;
@@ -36,7 +35,9 @@ static void pprint_bytes(FILE *stream, const uint8_t *bs, size_t len)
     fprintf(stream, "\"");
     for (size_t i = 0; i < len; i++) {
       uint8_t c = bs[i];
-      if (c >= 0x20 && c <= 0x7e)
+      if (c == '"' || c == '\\')
+        fprintf(stream, "\\%c", c);
+      else if (c >= 0x20 && c <= 0x7e)
         fputc(c, stream);
       else
         fprintf(stream, "\\u00%02hhx", c);