Когда линии SVG лежат в своих, по-видимому, правильных координатах, они фактически лежат между пикселями, поэтому, когда вы указываете M1 1 L50 1
, он рисует половину пикселя в верхней части, а другую половину в нижней части пикселя, делая его похожим на толстую , полупрозрачная линия.
Чтобы решить эту проблему, вам нужно либо закрасить половину пикселя, либо перевести ваши элементы на полпикселя, т.е. element.translate(0.5, 0.5)
Вы можете увидеть размытые и резкие линии здесь:
http://jsfiddle.net/k8AKy/