Это обычное поведение операции рисования линии.
Толщина линии равномерно распределена по обеим сторонам линии. Таким образом, если у вас есть 10pt-линия от (0,0) до (10,0) и вы используете стиль линии торцевой крышки, у вас будет заполненная область прямоугольника angular с углами (0, -5), (10 , -5), (10,5), (0,5).
Посмотрите этот файл PDF - вы можете увидеть этот эффект во второй строке, втором столбце. Внутренние белые и внешние черные линии имеют одинаковую начальную и конечную точки.
Поэтому, если вы хотите, чтобы все находилось внутри этого прямоугольника, либо используйте путь отсечения, как сказал mkl, либо рассчитайте необходимые конечные точки, взяв ширина линии и стиль cap / join учитывают.