He encontrado una forma, que es pasar la imagen a gif y usar la siguiente función, pero luego el color rojo se divide en varios colores (tonalidades de rojo), y debo remplazarlos uno por uno, y la imagen pierde mucha calidad, por eso de momento no lo contemplo como opción.
Aquí lo dejo:
Código PHP:
$imgname = "test.gif";
$im = imagecreatefromgif ($imgname);
$index = imagecolorclosest ( $im, 255,255,255 ); // get White COlor
imagecolorset($im,$index,92,92,92); // SET NEW COLOR
$imgname = "result.gif";
imagegif($im, $imgname ); // save image as gif
imagedestroy($im);
PD: He comprobado que esta misma función, funciona en png aplicando imagetruecolortopalette($im, false, 255); pero es mas o menos como pasarla a gif.