У вас каждая новая линия добавляется к пути и весь путь отрисовывается используйте метод .beginPath(), чтобы указать, что начинаете новый path, а не продолжаете старый context.beginPath(); context.moveTo(this.x, this.y); context.lineTo(CANVAS_WIDTH, Math.floor(Math.random() * CANVAS_HEIGHT)); context.lineWidth = 1; context.strokeStyle = "#ff0000"; context.stroke(); А еще я советую не менять свойства канвы в каждом кадре, если этого не нужно. Слишком ресурсоемко. В вашем примере достаточно задать lineWidth и strokeStyle один раз. Кроме того, желательно избегать очистки ВСЕГО канваса, если это возможно. Жрет проц неимоверно