public function brighter($shade = 0.7)
    {
        $r = $this->getRed();
        $g = $this->getGreen();
        $b = $this->getBlue();
        $alpha = $this->getAlpha();

        $i = (integer) (1.0 / (1.0 - $shade));

        if ($r == 0 && $g == 0 && $b == 0) {
            return new self($i, $i, $i, $alpha);
        }

        if ($r > 0 && $r < $i)
            $r = $i;
        if ($g > 0 && $g < $i)
            $g = $i;
        if ($b > 0 && $b < $i)
            $b = $i;

        return $this->setFromArray(array(
                    min(array((integer) ($r / $shade), 255))
                    , min(array((integer) ($g / $shade), 255))
                    , min(array((integer) ($b / $shade), 255))
                    , $alpha
        ));
    }