---
Also, on an unrelated note, I do like the Gibson filter you have been pushing { 0x1c, 0x38, 0x55, 0x38, 0x1c }, but I've found that at least on my monitor, it looks better with 0x60 in the middle. I think the FIR filter is very dependent on one's monitor contrast and gamma. On my monitor at work, I'm pretty sure the default Gibson filter would look much nicer. That's what you get when you buy a cheap monitor.
I'm working on a "membership/sigmoidal function" filter to precede the FIR filter, which does a pretty good job of duplicating the "Microsoft graininess", for those that prefer it that way. Basically it lowers values less than half intensity, and raises those above half intensity. If you want to tinker with it here it is:
val = 256.0 /(1.0+exp(-(10.0*(val/256.0-.5))));
It goes right before the line "pix = fir[0] + weights[0] * val;"




