diff --git a/shape.lua b/shape.lua
index 37b6d37ce45918e29b81bfe2b9488ecfe5546cd4..64ef73cf6cb85d972ce2bf855c8332aee960c4ea 100644
--- a/shape.lua
+++ b/shape.lua
@@ -127,7 +127,7 @@ function shape.load(t, file)
             faceNumber = tonumber(matches[2])
         else
           if vertexRead < vertexNumber then
-              vertices[#vertices+1] = {tonumber(matches[1]), tonumber(matches[2]), tonumber(matches[3])}
+              vertices[#vertices+1] = vector.new(3, {tonumber(matches[1]), tonumber(matches[2]), tonumber(matches[3])})
               vertexRead = vertexRead + 1
           else
             local faceSize = tonumber(matches[1])
@@ -135,8 +135,9 @@ function shape.load(t, file)
             for i = 1, faceSize do
                 faceVertices[i] = vertices[tonumber(matches[i+1]) + 1]
             end
-            local normal = vector.cross(vector.new(3, faceVertices[2]) - vector.new(3, faceVertices[1]),
-                                        vector.new(3, faceVertices[3]) - vector.new(3, faceVertices[1]))
+            local normal = vector.cross(faceVertices[2] - faceVertices[1],
+                                        faceVertices[3] - faceVertices[1])
+                                  :normalized()
             faces[#faces+1] = face.new(faceVertices, normal)
             facesRead = facesRead + 1
           end