^LS is one of those commands that is best sent separately before your main print job. Try changeing the ZPL_STRING to:
string ZPL_STRING = string.Format(@"
I tested it with the following string:
This prints out 2 labels, each with a box, but the second is shifted from the first.
Robin thanks for getting back with me. I tried the string above with no luck. With the ^LS before the rest of the code the printer setting did not get updated. It would get updated the other way but the "left position" setting on the printer seems to be ignored. I can adjust the ^LT from the code and it would update the "label top" setting on the printer and would be reflected in the label I was printing.