получившееся значения яркости могут выходить за 255... поэтому вместо белого цвета получаешь мусор...
надо как-то так подкрутить:
mono = mono>255 ? 255 : mono;
ЗЫ: честно говоря, не очень знаю, но, есть сомнения по поводу цифр....
если результат не удовлетворит попробуй: 0.299 * R + 0.587 * G + 0.114 * B;
[added]
по поводу 255-ти я осчитался... не смотри на это..