diff --git a/nibabel/nifti1.py b/nibabel/nifti1.py
index 548ad34658..a48b73a729 100644
--- a/nibabel/nifti1.py
+++ b/nibabel/nifti1.py
@@ -1810,11 +1810,10 @@ def update_header(self):
 
     def _affine2header(self):
         """ Unconditionally set affine into the header """
-        hdr = self._header
         # Set affine into sform with default code
-        hdr.set_sform(self._affine, code='aligned')
+        self.set_sform(self._affine, code='aligned', update_affine=True)
         # Make qform 'unknown'
-        hdr.set_qform(self._affine, code='unknown')
+        self.set_qform(self._affine, code='unknown', update_affine=True)
 
     def get_qform(self, coded=False):
         """ Return 4x4 affine matrix from qform parameters in header
diff --git a/nibabel/tests/test_nifti1.py b/nibabel/tests/test_nifti1.py
index 78f876ec7d..955863d4c2 100644
--- a/nibabel/tests/test_nifti1.py
+++ b/nibabel/tests/test_nifti1.py
@@ -1070,6 +1070,28 @@ def test_write_scaling(self):
             with np.errstate(invalid='ignore'):
                 self._check_write_scaling(slope, inter, e_slope, e_inter)
 
+    def test_same_affine_before_and_after_write(self):
+        # Ensure affine attribute is the same as the one will be written
+        # It may differ because of float64 to float32 casting
+        IC = self.image_class
+        data = np.ones((5, 5, 5))
+        affine = np.array(
+            [
+                [2.99892688e+00, 1.00872545e-02, 7.95947611e-02,
+                    -1.19315027e+02],
+                [-5.04193734e-03,  2.99400663e+00, -1.89471290e-01,
+                    -1.19174288e+02],
+                [-8.00727755e-02, 1.89269632e-01, 2.99295425e+00,
+                    -2.83687850e+01],
+                [0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+                    1.00000000e+00]
+            ]
+        )
+        img = IC(data, affine)
+        img_rt = bytesio_round_trip(img)
+        assert_array_equal(img.affine, img.header.get_best_affine())
+        assert_array_equal(img.affine, img_rt.affine)
+
 
 class TestNifti1Image(TestNifti1Pair):
     # Run analyze-flavor spatialimage tests