There were two typos in the last post, the first was not declaring r, g and b as floats, the second was on the line
b = CalculateBezierPoint(colour.b, p2, p2).y;I used p2 twice. That explains why it was so blue in the beginning and so yellow in the end. So... one of the gifs is inaccurate.