codice:
                rgbValues[counter] -= 32;
                if (rgbValues[counter] < 32)
                    rgbValues[counter] = 32;
Occhio che byte è senza segno, per cui se è minore di 32 fa wraparound e diventa positivo; probabilmente quello che vuoi fare è:
codice:
if (rgbValues[counter] > 32)
    rgbValues[counter] -= 32;
else
    rgbValues[counter] = 0;