Maybe I'm late, but I here it goes.
If your preview container is 150px * 150px, then it doesn't look nice to have a dynamic aspectRatio, you can simply set it to "1:1".
//static aspectRatio
$('#croptarget').imgAreaSelect({
aspectRatio: "1:1",
handles: true,
fadeSpeed: 200,
onSelectChange: preview
});
Then, you can change the preview function to something like this:
$('#preview').css({
width: Math.round(scaleX * $("#croptarget").width())+"px",
height: Math.round(scaleY * $("#croptarget").height())+"px",
marginLeft: -Math.round(scaleX * selection.x1),
marginTop: -Math.round(scaleY * selection.y1)
});
You need to get the large image width and height, so the function calculates de exact width and height the preview image needs.
Here's your modified jsfiddle