(Sandr), добавьте еще preventDefault для mousedown
drag.addEventListener("mousedown", function (event) {
*!*event.preventDefault();*/!*
var rect = drag.getBoundingClientRect();
…
А чтобы прорисовывалось не рывками, можно попробовать по mousemove только записывать координаты, а блок перемещать с определенным интервалом времени, ну или вообще requestAnimationFrame запилить.