Right so now I've got:point1 = Vector2.Transform(point1, Matrix.CreateRotationZ(angle)); point1 += origin;
Where point1 is the fixed point, and the origin is the well, origin. But this doesn't appear to do anything.
What you need to do is rotate something about the triangles origin. The something is your FixedPoint in relation to the triangles Origin, which means:
Vector something = FixedPoint - Origin; (this is called translation by the way)
Afterwards you need to translate it back to where it was to get the correct coordinates:
Vector newFixedPoint = something + origin
Here is the matrix that you need for the rotation - to make sure that you are actually using the correct one: