Thanks for adding this code. Unfortunately, it doesn't quite work right.

1) First, let's define a constant for the minimum size, and then use it here and in move() function instead of hardcoding 100 in two different places.

2) I think because of the way your calculations work if the crop region is close to an edge, this code may not actually make the region larger than 100x100.

3) It also doesn't maintain the aspect ratio, and would turn a too-small landscape crop region into a 100x100 square, I think.

I actually like the fact that the crop region remains around the exact same part of the image when I rotate the phone, even though it becomes small.  So instead of adjusting it here, consider just modifying the crop handle dragging code in move().  That function has code that handles the aspect ratio correctly.  Perhaps you could modify it to use 100x100 as the minimum size, or the current size, if that is smaller than 100x100.  So it wouldn't allow the user to make it smaller than 100x100, but it would allow the user to make a small crop region bigger.