diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index cf21834..9aa47a3 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -26,6 +26,7 @@
 #include "Debug.h"
 #include "DisplayListOp.h"
 #include "DisplayListLogBuffer.h"
+#include "utils/MathUtils.h"
 
 namespace android {
 namespace uirenderer {
@@ -217,7 +218,9 @@
         mat4 anim(*properties().getAnimationMatrix());
         matrix.multiply(anim);
     }
-    if (properties().hasTransformMatrix()) {
+
+    bool applyTranslationZ = true3dTransform && !MathUtils::isZero(properties().getTranslationZ());
+    if (properties().hasTransformMatrix() || applyTranslationZ) {
         if (properties().isTransformTranslateOnly()) {
             matrix.translate(properties().getTranslationX(), properties().getTranslationY(),
                     true3dTransform ? properties().getTranslationZ() : 0.0f);
@@ -391,7 +394,7 @@
         RenderNode* child = childOp->mDisplayList;
         float childZ = child->properties().getTranslationZ();
 
-        if (childZ != 0.0f) {
+        if (!MathUtils::isZero(childZ)) {
             zTranslatedNodes.add(ZDrawDisplayListOpPair(childZ, childOp));
             childOp->mSkipInOrderDraw = true;
         } else if (!child->properties().getProjectBackwards()) {
diff --git a/libs/hwui/RenderProperties.cpp b/libs/hwui/RenderProperties.cpp
index 58ec32d..a922db8 100644
--- a/libs/hwui/RenderProperties.cpp
+++ b/libs/hwui/RenderProperties.cpp
@@ -26,16 +26,7 @@
 #include <SkPathOps.h>
 
 #include "Matrix.h"
-
-/**
- * Convenience value to check for float values that are close enough to zero to be considered
- * zero.
- */
-#define NONZERO_EPSILON .001f
-
-static inline bool is_zero(float value) {
-    return (value >= -NONZERO_EPSILON) && (value <= NONZERO_EPSILON);
-}
+#include "utils/MathUtils.h"
 
 namespace android {
 namespace uirenderer {
@@ -151,7 +142,7 @@
         }
         SkMatrix* transform = mComputedFields.mTransformMatrix;
         transform->reset();
-        if (is_zero(getRotationX()) && is_zero(getRotationY())) {
+        if (MathUtils::isZero(getRotationX()) && MathUtils::isZero(getRotationY())) {
             transform->setTranslate(getTranslationX(), getTranslationY());
             transform->preRotate(getRotation(), getPivotX(), getPivotY());
             transform->preScale(getScaleX(), getScaleY(), getPivotX(), getPivotY());
diff --git a/libs/hwui/utils/MathUtils.h b/libs/hwui/utils/MathUtils.h
new file mode 100644
index 0000000..57ba8fa
--- /dev/null
+++ b/libs/hwui/utils/MathUtils.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef MATHUTILS_H
+#define MATHUTILS_H
+
+namespace android {
+namespace uirenderer {
+
+class MathUtils {
+private:
+    static const float gNonZeroEpsilon = 0.001f;
+public:
+    /**
+     * Check for floats that are close enough to zero.
+     */
+    inline static bool isZero(float value) {
+        return (value >= -gNonZeroEpsilon) && (value <= gNonZeroEpsilon);
+    }
+}; // class MathUtils
+
+} /* namespace uirenderer */
+} /* namespace android */
+
+#endif /* RENDERNODE_H */
