ent_morph _does_ change the bounding box. That's the reason of the different shadow size.

You can determine the shadow size through changing the bounding box. Please check. This works regardless of ent_morph. Maybe your code affects the bbox by calling c_setminmax or the like - this would explain the problem. But if you are sure that it's something else, please upload a project where it happens - we'll look into it.