Remember that there are three coordinate systems that you are juggling here.
There is the 2D render viewport that you mentioned where everything in view of the 3D camera is ultimately drawn.
There is the three.js 3D coordinate system. This is the coordinate system defining the positions of any 3D objects, lights, and cameras that you create in the 3D scene. It has its own notion of width, height, and depth (not the same as the render viewport). In fact, the units here are pretty arbitrary. If you put a 1x1x1 cube at the origin, the rendered size depends on the position of the camera. If you put the camera close, the cube will appear large. If you put it far away, then the cube will be small. You can choose any value for the 3D width, height, and depth, but you have to place a camera appropriately to the scene (i.e. is your scene a whole game level, or a single 3D object).
Finally, there is the Leap Motion coordinate system, which reports values in real-world millimeters. You have to transform the values you get from this coordinate system into the interactable area of your 3D scene. This could be the entire scene (e.g. as in the single 3D object case) or it could be a portion of the scene (e.g. the game level case).
The 2D render size is pretty irrelevant. You have to map the Leap input to the 3D coordinate system used by Leap.js.