diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp
index f096c50a03..f8e20bcd32 100644
--- a/interface/src/ui/overlays/Web3DOverlay.cpp
+++ b/interface/src/ui/overlays/Web3DOverlay.cpp
@@ -58,7 +58,6 @@
 
 static int MAX_WINDOW_SIZE = 4096;
 
-static const float INCHES_TO_METERS = 1.0f / 39.3701f;
 static const float METERS_TO_INCHES = 39.3701f;
 static const float OPAQUE_ALPHA_THRESHOLD = 0.99f;
 
diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js
index cdc25fede3..01fdfb1845 100644
--- a/scripts/system/libraries/WebTablet.js
+++ b/scripts/system/libraries/WebTablet.js
@@ -137,12 +137,15 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location, visible) {
         visible: visible
     });
 
-    var HOME_BUTTON_Y_OFFSET = ((tabletHeight / 2) - (tabletHeight / 20)) * (1 / sensorScaleFactor);
-    this.homeButtonID = Overlays.addOverlay("sphere", {
+    var HOME_BUTTON_Y_OFFSET = ((tabletHeight / 2) - (tabletHeight / 20)) * (1 / sensorScaleFactor) - 0.003;
+    // FIXME: Circle3D overlays currently at the wrong dimensions, so we need to account for that here
+    var homeButtonDim = 4.0 * tabletScaleFactor / 3.0;
+    this.homeButtonID = Overlays.addOverlay("circle3d", {
         name: "homeButton",
-        localPosition: {x: 0.0, y: -HOME_BUTTON_Y_OFFSET, z: 0.0},
-        localRotation: {x: 0, y: 1, z: 0, w: 0},
-        dimensions: { x: 4 * tabletScaleFactor, y: 4 * tabletScaleFactor, z: 4 * tabletScaleFactor},
+        localPosition: { x: 0.0, y: -HOME_BUTTON_Y_OFFSET, z: -WEB_ENTITY_Z_OFFSET },
+        localRotation: { x: 0, y: 1, z: 0, w: 0},
+        dimensions: { x: homeButtonDim, y: homeButtonDim, z: homeButtonDim },
+        solid: true,
         alpha: 0.0,
         visible: visible,
         drawInFront: false,
@@ -152,14 +155,14 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location, visible) {
 
     this.homeButtonHighlightID = Overlays.addOverlay("circle3d", {
         name: "homeButtonHighlight",
-        localPosition: { x: 0, y: -HOME_BUTTON_Y_OFFSET + 0.003, z: -0.0158 },
+        localPosition: { x: 0, y: -HOME_BUTTON_Y_OFFSET, z: -WEB_ENTITY_Z_OFFSET },
         localRotation: { x: 0, y: 1, z: 0, w: 0 },
-        dimensions: { x: 4 * tabletScaleFactor, y: 4 * tabletScaleFactor, z: 4 * tabletScaleFactor },
+        dimensions: { x: homeButtonDim, y: homeButtonDim, z: homeButtonDim },
+        color: { red: 255, green: 255, blue: 255 },
         solid: true,
         innerRadius: 0.9,
         ignoreIntersection: true,
         alpha: 1.0,
-        color: { red: 255, green: 255, blue: 255 },
         visible: visible,
         drawInFront: false,
         parentID: this.tabletEntityID,
diff --git a/scripts/system/libraries/controllerDispatcherUtils.js b/scripts/system/libraries/controllerDispatcherUtils.js
index fb6de0e683..33472d6581 100644
--- a/scripts/system/libraries/controllerDispatcherUtils.js
+++ b/scripts/system/libraries/controllerDispatcherUtils.js
@@ -255,22 +255,8 @@ projectOntoEntityXYPlane = function (entityID, worldPos, props) {
 projectOntoOverlayXYPlane = function projectOntoOverlayXYPlane(overlayID, worldPos) {
     var position = Overlays.getProperty(overlayID, "position");
     var rotation = Overlays.getProperty(overlayID, "rotation");
-    var dimensions;
-
-    var dpi = Overlays.getProperty(overlayID, "dpi");
-    if (dpi) {
-        // Calculate physical dimensions for web3d overlay from resolution and dpi; "dimensions" property is used as a scale.
-        var resolution = Overlays.getProperty(overlayID, "resolution");
-        resolution.z = 1; // Circumvent divide-by-zero.
-        var scale = Overlays.getProperty(overlayID, "dimensions");
-        scale.z = 0.01; // overlay dimensions are 2D, not 3D.
-        dimensions = Vec3.multiplyVbyV(Vec3.multiply(resolution, INCHES_TO_METERS / dpi), scale);
-    } else {
-        dimensions = Overlays.getProperty(overlayID, "dimensions");
-        if (dimensions.z) {
-            dimensions.z = 0.01; // overlay dimensions are 2D, not 3D.
-        }
-    }
+    var dimensions = Overlays.getProperty(overlayID, "dimensions");
+    dimensions.z = 0.01; // we are projecting onto the XY plane of the overlay, so ignore the z dimension
 
     return projectOntoXYPlane(worldPos, position, rotation, dimensions, DEFAULT_REGISTRATION_POINT);
 };
diff --git a/scripts/system/libraries/touchEventUtils.js b/scripts/system/libraries/touchEventUtils.js
index 53ac4f49d1..7bd2a10dc9 100644
--- a/scripts/system/libraries/touchEventUtils.js
+++ b/scripts/system/libraries/touchEventUtils.js
@@ -174,9 +174,7 @@ function calculateTouchTargetFromOverlay(touchTip, overlayID) {
     if (dimensions === undefined) {
         return;
     }
-    if (!dimensions.z) {
-        dimensions.z = 0.01; // sometimes overlay dimensions are 2D, not 3D.
-    }
+    dimensions.z = 0.01; // we are projecting onto the XY plane of the overlay, so ignore the z dimension
     var invDimensions = { x: 1 / dimensions.x, y: 1 / dimensions.y, z: 1 / dimensions.z };
     var normalizedPosition = Vec3.sum(Vec3.multiplyVbyV(localPos, invDimensions), DEFAULT_REGISTRATION_POINT);
 
diff --git a/scripts/system/libraries/utils.js b/scripts/system/libraries/utils.js
index a6d09e564d..3e9a548798 100644
--- a/scripts/system/libraries/utils.js
+++ b/scripts/system/libraries/utils.js
@@ -185,7 +185,7 @@ logTrace = function(str) {
 // (the vector that would move the point outside the sphere)
 // otherwise returns false
 findSphereHit = function(point, sphereRadius) {
-    var EPSILON = 0.000001; //smallish positive number - used as margin of error for some computations
+    var EPSILON = 0.000001;     //smallish positive number - used as margin of error for some computations
     var vectorLength = Vec3.length(point);
     if (vectorLength < EPSILON) {
         return true;
@@ -406,22 +406,21 @@ resizeTablet = function (width, newParentJointIndex, sensorToWorldScaleOverride)
     var screenHeight = 0.81 * tabletHeight;
     Overlays.editOverlay(HMD.tabletScreenID, {
         localPosition: { x: 0, y: WEB_ENTITY_Y_OFFSET, z: -WEB_ENTITY_Z_OFFSET },
-        dimensions: {x: screenWidth, y: screenHeight, z: 0.1},
+        dimensions: { x: screenWidth, y: screenHeight, z: 0.1 },
         dpi: tabletDpi
     });
 
     // update homeButton
-    var HOME_BUTTON_Y_OFFSET = ((tabletHeight / 2) - (tabletHeight / 20)) * sensorScaleOffsetOverride;
-    var homeButtonDim = 4 * tabletScaleFactor;
+    var HOME_BUTTON_Y_OFFSET = ((tabletHeight / 2) - (tabletHeight / 20) - 0.003 * sensorScaleFactor) * sensorScaleOffsetOverride;
+    // FIXME: Circle3D overlays currently at the wrong dimensions, so we need to account for that here
+    var homeButtonDim = 4.0 * tabletScaleFactor / 3.0;
     Overlays.editOverlay(HMD.homeButtonID, {
-        localPosition: {x: 0, y: -HOME_BUTTON_Y_OFFSET, z: 0 },
-        dimensions: { x: homeButtonDim, y: homeButtonDim, z: homeButtonDim}
+        localPosition: { x: 0, y: -HOME_BUTTON_Y_OFFSET, z: -WEB_ENTITY_Z_OFFSET },
+        dimensions: { x: homeButtonDim, y: homeButtonDim, z: homeButtonDim }
     });
 
-    // Circle3D overlays render at 1.5x their proper dimensions
-    var highlightDim = homeButtonDim / 3.0;
     Overlays.editOverlay(HMD.homeButtonHighlightID, {
-        localPosition: { x: 0, y: -HOME_BUTTON_Y_OFFSET + 0.003 * sensorScaleFactor * sensorScaleOffsetOverride, z: -0.0158 * sensorScaleFactor * sensorScaleOffsetOverride },
-        dimensions: { x: highlightDim, y: highlightDim, z: highlightDim }
+        localPosition: { x: 0, y: -HOME_BUTTON_Y_OFFSET, z: -WEB_ENTITY_Z_OFFSET },
+        dimensions: { x: homeButtonDim, y: homeButtonDim, z: homeButtonDim }
     });
 };
diff --git a/scripts/system/tablet-ui/tabletUI.js b/scripts/system/tablet-ui/tabletUI.js
index 17821c737e..36a1cbcdd9 100644
--- a/scripts/system/tablet-ui/tabletUI.js
+++ b/scripts/system/tablet-ui/tabletUI.js
@@ -47,7 +47,7 @@
             }
             return false;
         }
-        if (Overlays.getProperty(HMD.homeButtonID, "type") != "sphere" ||
+        if (Overlays.getProperty(HMD.homeButtonID, "type") != "circle3d" ||
             Overlays.getProperty(HMD.tabletScreenID, "type") != "web3d") {
             if (debugTablet) {
                 print("TABLET is invalid due to other");