It's hard to say, since you did the Matlab script yourself. But generally speaking you need a very dense k-point sampling and then you need to interpolate to E=0. I guess when you select only a subset of points the sampling density becomes too low.
And yes, if you use fractional k-points, it will be distorted, it must be Cartesian.
Note that we are planning to make this kind of plot directly in VNL - soon