For some reason the tool path is rounding the corners instead of following the square profile path I programmed. I was able to get the left to cut outs square by changing the start location of the tool path but to run it 4 times just to get square corners is ridiculous.
G-code G64 and a P parameter can be added to the header area of your post processor to make sure vectors are follow closely (within the value set with P).
Example: G64P.001 will keep the bit within .001 of your vectors.
Example: G64P.1 will let the bit roam up to .1" from the vector in an effort to keep up feed speed.
Without this your machine is rounding off corners so it doesn't have to slow to a stop to turn a corner. Your results were better when you slowed down feed speed, but feed speed could be increased with the G64P.001 command and accuracy can be maintained.