Translate point after rotation relative to different origin

I have 200x380 input image and coordinates (63,146) where (0,0) is top-left:

I rotate about the centre some amount of degrees and expand the "canvas" to avoid cropping resulting in larger output image:

How do I calculate the relative position of point after rotation, with respect to the new larger image?

I'm roughly familiar with how to get the point with respect to the original size but I'm not sure how to transform the calculated new point to fit it in the new image. Red dot is failed attempt of implementing solution transforming the images centre to the 0,0 used in the rotation transform:

My math literacy is not fantastic and I apologise for misusing any terms.

• The devil is in the details. It appears that you’re able to compute the new bounding box and position the vertices of the transformed rectangle correctly. The very same transformation applies to every other point. Add an explicit example of a failed calculation. – amd May 21 at 22:19
• Solved in the end by doing exactly this. I expect my lack of literacy in this field led to not knowing what I was even really looking for... – Gavin May 22 at 23:12

Turns out the solution lies in knowing the correct terms to google for.

Put exact implementation here into a function for individual points, using same rotation matrix returned by the image rotate function solved the problem:

def rotate_single_point(point_tuple, rotation_matrix):
# https://stackoverflow.com/a/38794480/2244284
# points
points = np.array([[point_tuple[0],  point_tuple[1]]])