diff --git a/js/baseplane/OctaBasePlane.js b/js/baseplane/OctaBasePlane.js
index 0e58993ea976d084f5fa5f11945363086878f690..937405715693b4624b7c920b93b1ecf3db0bd162 100644
--- a/js/baseplane/OctaBasePlane.js
+++ b/js/baseplane/OctaBasePlane.js
@@ -65,6 +65,8 @@ define(['underscore', 'backbone', 'appState', 'lattice', 'threeModel', 'three',
             var pointVertOffset = 2*baseVertOffset;
             var horizontalOffset = xySep;
 
+            var yOffset = 1/Math.sqrt(3)/2;
+
             for (var j=-dimX;j<=dimX;j++){
                 for (var i=-dimY;i<=dimY;i++){
 
@@ -73,9 +75,9 @@ define(['underscore', 'backbone', 'appState', 'lattice', 'threeModel', 'three',
                         xOffset = 1/2*xScale;
                     }
 
-                    vertices.push(new THREE.Vector3(i*xScale + xOffset - horizontalOffset, j*yScale + baseVertOffset, 0));
-                    vertices.push(new THREE.Vector3(i*xScale + xOffset + horizontalOffset, j*yScale + baseVertOffset, 0));
-                    vertices.push(new THREE.Vector3(i*xScale + xOffset, j*yScale - pointVertOffset, 0));
+                    vertices.push(new THREE.Vector3(i*xScale + xOffset - horizontalOffset - xScale/2, j*yScale + baseVertOffset - yOffset, 0));
+                    vertices.push(new THREE.Vector3(i*xScale + xOffset + horizontalOffset - xScale/2, j*yScale + baseVertOffset - yOffset, 0));
+                    vertices.push(new THREE.Vector3(i*xScale + xOffset - xScale/2, j*yScale - pointVertOffset - yOffset, 0));
 
                 }
 
diff --git a/js/lattice/OctaEdgeLattice.js b/js/lattice/OctaEdgeLattice.js
index 517ff6aa4dfbc0c32bd53195d20e640b50d6b51a..1c80e60e33a7d5feffe507b0545ccff636afee19 100644
--- a/js/lattice/OctaEdgeLattice.js
+++ b/js/lattice/OctaEdgeLattice.js
@@ -17,36 +17,51 @@ define(['underscore', 'backbone', 'appState', 'lattice', 'globals', 'plist', 'th
         },
 
         getIndexForPosition: function(absPosition){
-            var yIndex = Math.floor(absPosition.y/this.yScale());
-            if (yIndex%2 != 0) absPosition.x += this.xScale()/2;
-            var yScale = 1/Math.sqrt(3);
             var index = this._indexForPosition(absPosition);
-            if (index.z%3 == 1) {
-                absPosition.x -= this.xScale()/2;
-                absPosition.y += yScale/2;
-            } else if (index.z%3 == 2){
-                absPosition.y += yScale;
+            if (index.y%2 != 0) {
+                absPosition.x += this.xScale()/2;
+                index = this._indexForPosition(absPosition);
             }
-            return this._indexForPosition(absPosition);
+            return index;
         },
 
         getPositionForIndex: function(index){
-            var position = index.clone();
-            var xScale = this.xScale();
-            var yScale = 1/Math.sqrt(3);
-            position.x = (position.x+1/2)*xScale;
-            position.y = position.y*this.yScale()+yScale/2;
-            position.z = (position.z+0.5)*this.zScale();
-            if (index.y%2 != 0) position.x -= this.xScale()/2;
-            if (index.z%3 == 1) {
-                position.x += this.xScale()/2;
-                position.y -= yScale/2;
-            } else if (index.z%3 == 2){
-                position.y -= yScale;
-            }
+            var position = this._positionForIndex(index);
+            if ((index.y%2) != 0) position.x -= this.xScale()/2;
             return position;
         },
 
+//        getIndexForPosition: function(absPosition){
+//            var yIndex = Math.floor(absPosition.y/this.yScale());
+//            if (yIndex%2 != 0) absPosition.x += this.xScale()/2;
+//            var yScale = 1/Math.sqrt(3);
+//            var index = this._indexForPosition(absPosition);
+//            if (index.z%3 == 1) {
+//                absPosition.x -= this.xScale()/2;
+//                absPosition.y += yScale/2;
+//            } else if (index.z%3 == 2){
+//                absPosition.y += yScale;
+//            }
+//            return this._indexForPosition(absPosition);
+//        },
+//
+//        getPositionForIndex: function(index){
+//            var position = index.clone();
+//            var xScale = this.xScale();
+//            var yScale = 1/Math.sqrt(3);
+//            position.x = (position.x+1/2)*xScale;
+//            position.y = position.y*this.yScale()+yScale/2;
+//            position.z = (position.z+0.5)*this.zScale();
+//            if (index.y%2 != 0) position.x -= this.xScale()/2;
+//            if (index.z%3 == 1) {
+//                position.x += this.xScale()/2;
+//                position.y -= yScale/2;
+//            } else if (index.z%3 == 2){
+//                position.y -= yScale;
+//            }
+//            return position;
+//        },
+
         xScale: function(cellSeparation){
             if (cellSeparation === undefined) cellSeparation = this.get("cellSeparation").xy;
             return 1+2*cellSeparation;
diff --git a/js/lattice/OctaFaceLattice.js b/js/lattice/OctaFaceLattice.js
index 2aa1d1feebb351d1de39ec0491d55e83bee2e199..5cc6b5d56ff2ea1d5784fc9b06c9a48546a01e8d 100644
--- a/js/lattice/OctaFaceLattice.js
+++ b/js/lattice/OctaFaceLattice.js
@@ -17,18 +17,16 @@ define(['underscore', 'backbone', 'appState', 'lattice', 'globals', 'plist', 'th
         },
 
         getIndexForPosition: function(absPosition){
-            var yIndex = Math.floor(absPosition.y/this.yScale());
-            if (yIndex%2 != 0) absPosition.x += this.xScale()/2;
             var index = this._indexForPosition(absPosition);
-            if (index.z%2 == 1) index.y += 1;
+            if (index.y%2 != 0) {
+                absPosition.x += this.xScale()/2;
+                index = this._indexForPosition(absPosition);
+            }
             return index;
         },
 
         getPositionForIndex: function(index){
-            var position = index.clone();
-            position.x = (position.x+1/2);
-            position.y = position.y*this.yScale()+1/Math.sqrt(3)/2;
-            position.z = (position.z+0.5)*this.zScale();
+            var position = this._positionForIndex(index);
             if ((index.y%2) != 0) position.x -= this.xScale()/2;
             return position;
         },
diff --git a/js/lattice/TetraStackedLattice.js b/js/lattice/TetraStackedLattice.js
index 4bea1a019f0472c87148ebaf3faf78d544ff6cb0..9cdbc6d00dd408f2106ecc9582884ffdd82d5041 100644
--- a/js/lattice/TetraStackedLattice.js
+++ b/js/lattice/TetraStackedLattice.js
@@ -17,18 +17,16 @@ define(['underscore', 'backbone', 'appState', 'lattice', 'globals', 'plist', 'th
         },
 
         getIndexForPosition: function(absPosition){
-            var yIndex = Math.floor(absPosition.y/this.yScale());
-            if (yIndex%2 != 0) absPosition.x += this.xScale()/2;
             var index = this._indexForPosition(absPosition);
-            if (index.z%2 == 1) index.y += 1;
+            if (index.y%2 != 0) {
+                absPosition.x += this.xScale()/2;
+                index = this._indexForPosition(absPosition);
+            }
             return index;
         },
 
         getPositionForIndex: function(index){
-            var position = index.clone();
-            position.x = (position.x+1/2);
-            position.y = position.y*this.yScale()+1/Math.sqrt(3)/2;
-            position.z = (position.z+0.5)*this.zScale();
+            var position = this._positionForIndex(index);
             if ((index.y%2) != 0) position.x -= this.xScale()/2;
             return position;
         },