I've just had another look at the code:
What we need to add (inside ipdf) is the Floyd-Steinberg dithering that was there before, but now on the 8bit greyscale image. The implementation of that algorithm in greyscale should be easier than the one that was used to convert from RGB24 to 8bit greyscale including dithering.
You should understand that the iLiad does a linear conversion from 256 grey levels to 16 grey levels on a device-driver level (so the first 16 levels of grey become white, etc.).
Maybe Scotty can have a look at this when he wakes up