diff --git a/Foundation/NSAffineTransform.swift b/Foundation/NSAffineTransform.swift
index 20cef42..58b12c4 100644
--- a/Foundation/NSAffineTransform.swift
+++ b/Foundation/NSAffineTransform.swift
@@ -286,16 +286,18 @@
             preconditionFailure("Unkeyed coding is unsupported.")
         }
         
-        let pointer = UnsafePointer<Float>([
+        let array = [
             Float(transformStruct.m11),
             Float(transformStruct.m12),
             Float(transformStruct.m21),
             Float(transformStruct.m22),
             Float(transformStruct.tX),
             Float(transformStruct.tY),
-        ])
-
-        aCoder.encodeArray(ofObjCType: "[f]", count: 6, at: pointer)
+        ]
+        
+        array.withUnsafeBytes { pointer in
+            aCoder.encodeValue(ofObjCType: "[6f]", at: UnsafeRawPointer(pointer.baseAddress!))
+        }
     }
     
     open func copy(with zone: NSZone? = nil) -> Any {
@@ -312,20 +314,20 @@
             preconditionFailure("Unkeyed coding is unsupported.")
         }
         
-        let pointer = UnsafeMutablePointer<Float>.allocate(capacity: 6)
+        let pointer = UnsafeMutableRawPointer.allocate(bytes: MemoryLayout<Float>.stride * 6, alignedTo: 1)
         defer {
-            pointer.deinitialize()
-            pointer.deallocate(capacity: 6)
+            pointer.deallocate(bytes: MemoryLayout<Float>.stride * 6, alignedTo: 1)
         }
-        aDecoder.decodeArray(ofObjCType: "[f]", count: 6, at: pointer)
+        aDecoder.decodeValue(ofObjCType: "[6f]", at: pointer)
         
-        let m11 = pointer[0]
-        let m12 = pointer[1]
-        let m21 = pointer[2]
-        let m22 = pointer[3]
-        let tX = pointer[4]
-        let tY = pointer[5]
-        
+        let floatPointer = pointer.bindMemory(to: Float.self, capacity: 6)
+        let m11 = floatPointer[0]
+        let m12 = floatPointer[1]
+        let m21 = floatPointer[2]
+        let m22 = floatPointer[3]
+        let tX = floatPointer[4]
+        let tY = floatPointer[5]
+
         self.transformStruct = AffineTransform(m11: CGFloat(m11), m12: CGFloat(m12),
                                                m21: CGFloat(m21), m22: CGFloat(m22),
                                                tX: CGFloat(tX), tY: CGFloat(tY))
