diff --git a/src/Data/VectorSpace.hs b/src/Data/VectorSpace.hs
--- a/src/Data/VectorSpace.hs
+++ b/src/Data/VectorSpace.hs
@@ -84,9 +84,8 @@
 normalized v = v ^/ magnitude v
 
 -- | @project u v@ computes the projection of @v@ onto @u@.
-project :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> v -> v
-project u v = (v <.> u') *^ u'
-  where u' = normalized u
+project :: (InnerSpace v, s ~ Scalar v, Fractional s) => v -> v -> v
+project u v = ((v <.> u) *^ u) ^/ magnitudeSq u
 
 instance VectorSpace Double where
   type Scalar Double = Double
diff --git a/vector-space.cabal b/vector-space.cabal
--- a/vector-space.cabal
+++ b/vector-space.cabal
@@ -1,5 +1,5 @@
 Name:                vector-space
-Version:             0.8.1
+Version:             0.8.2
 Cabal-Version:       >= 1.2
 Synopsis:            Vector & affine spaces, linear maps, and derivatives
 Category:            math
