o(sharp(x2s(j)), 0);
					context.lineTo(sharp(x2s(j)), h);
				}
			}
			// vertical
			for(var i = stepped(s2y(h)); i <= stepped(s2y(0)); i += step) {
				if(i != 0) {
					context.moveTo(0, sharp(y2s(i)));
					context.lineTo(w, sharp(y2s(i)));
				}
			}
		} else if(atan_scale_checked) {
			// horizontal
			const x_from = s2x(20);
			const x_to = s2x(w-20);
			for(var i = Math.sign(x_from) * Math.floor(Math.log2(Math.abs(x_from))) - 1; i <= Math.sign(x_to) * Math.ceil(Math.log2(Math.abs(x_to))); ++i) {
