diff --git a/js/matrix.js b/js/matrix.js
index 53591ae..b4fb89f 100644
--- a/js/matrix.js
+++ b/js/matrix.js
@@ -127,8 +127,17 @@ function Matrix (h, w, zero) {
 				
 				//Scale row to get the leading one
 				var scaleFactor = result.rref.get(i,i);
-				result.rref._divideRow(i, scaleFactor);
-				if (augment) result.augment._divideRow(i, scaleFactor);
+				
+				//Determine whether division or multiplication by inverse
+				//will preserve the most digits
+				if (Math.abs(scaleFactor) >= 1) {
+    				result.rref._divideRow(i, scaleFactor);
+    				if (augment) result.augment._divideRow(i, scaleFactor);
+				} else {
+				    scaleFactor = 1./scaleFactor;
+				    result.rref._scaleRow(i, scaleFactor);
+				    if (augment) result.augment._scaleRow(i, scaleFactor)
+				}
 				
 				//Zero out rest of column
 				for (var row = 0; row < result.rref.rows; ++row) {