Make the panning match the cursor Enforce a minimum zoom that will keep the edges of the sphere from showing This probably just needs simple math with the aspect and/or the viewport's diagonal length. Enforce a maximum zoom that matches the pixel density of the original image at its natural dimensions, normal to the camera Choose a pleasant initial zoom Allow pinch-zooming Add data- attribute for minimum zoom Add data- attribute for starting angle Add data- attributes for canvas dimensions Automatically create canvas for each marked once it loads, and display:none the Set default canvas dimensions to match the size of the image Add a class to the for styling Copy matrix funcs into code Add licenses Add instructions Fix up code locality Give the uniforms simpler names Allow setting top and bottom angles in case the photo doesn't reach to the poles