I'm not sure if you realize that you're starting an interactive imcrop() session.
When you do this, the current axes is axes1. Running imcrop(M) will start an interactive cropping session in axes1. Once the user completes the selection and commits, the cropped image will be passed to imshow(), which will display it in axes2. If you want to start the interactive selection in axes2, you can do that a number of ways:
If you intend to automatically crop the image to the extent of the ROI bounding box, that's a different story.
S = regionprops(M,'boundingbox');
M = imcrop(M,S(1).BoundingBox + [-1 -1 1 1]);
It's also not really clear why you want to display a cropped copy of the ROI mask instead of the source.