The inaccurate overlap is likely due to an inaccurate registration. The latter can be due to multiple reasons:
Premature convergence. You are printing the optimizer’s stopping condition, what is it?
The transformation type is not appropriate for modeling the actual transformation. Is an affine transformation sufficient? If not, try BSplineTransform.
This is a slice from a 3D volume, what is the actual overlap between the mask and spinal cord segmented in the STIR image (Dice coefficient between a reference/ground truth 3D segmentation and the computed one).
Minor comments about the post: Please share code using triple backtick and not screenshots. The images are displayed upside down as compared to standard anatomical display, took me a second to recognize what I was looking at. Clinicians are very unforgiving about this. They have strong feelings about what is and what is not a correct visualization of the anatomy.