Como ajusto o brilho de uma cor?

Gostaria de escurecer uma cor existente para uso em um pincel de gradiente. Alguém poderia me dizer como fazer isso, por favor?

C #, .net 2.0, GDI +

  Color AdjustBrightness(Color c1, float factor)
    {

        float r = ((c1.R * factor) > 255) ? 255 : (c1.R * factor);
        float g = ((c1.G * factor) > 255) ? 255 : (c1.G * factor);
        float b = ((c1.B * factor) > 255) ? 255 : (c1.B * factor);

        Color c  = Color.FromArgb(c1.A,(int)r, (int)g, (int)b);
        return c ;

    }

questionAnswers(5)

yourAnswerToTheQuestion