diff --git a/umap/umap_.py b/umap/umap_.py
index <HASH>..<HASH> 100644
--- a/umap/umap_.py
+++ b/umap/umap_.py
@@ -1709,7 +1709,7 @@ class UMAP(BaseEstimator):
 
         embedding = optimize_layout(
             embedding,
-            self.embedding_,
+            self.embedding_.astype(np.float32, copy=False),  # Fix #179
             head,
             tail,
             n_epochs,
Fix #<I>

This meets the expectation that the embeddings passed to optimize_layout are float<I>. In the typical case, where they are float<I>, this should be no cost. When the stored embedding is not float<I>, this is a pretty cheap operation.