Part of mesh goes outside
The issue is your topology. In Blender, everything must be one piece, and your fin and teeth are separate from the body even though they appear to be together. To prove this, select one vertex of the body mesh, key Ctrl + L, then G and move your cursor. Watch as it separates.



Normally, W > Remove Doubles would help, but your mesh is too fragmented.

A noticeable seam that is too big for Remove Doubles:



What I have done is deleted several faces around the pieces in question and joined manually using F to create faces. I have also used Alt + M > At Center to join some suspicious vertices. Lastly, I touched up the weight painting. It's not perfect, especially in the mouth area, but it's a lot better.