# If there is no overlap then we're done.
         if not self._core.clip_area(area, clipped):
             return True
         # If there is no overlap then we're done.
         if not self._core.clip_area(area, clipped):
             return True
-                    clipped.x1,
-                    clipped.y1 + rows_per_buffer * subrect_index,
-                    clipped.x2,
-                    clipped.y1 + rows_per_buffer * (subrect_index + 1),
+                    x1=clipped.x1,
+                    y1=clipped.y1 + rows_per_buffer * subrect_index,
+                    x2=clipped.x2,
+                    y2=clipped.y1 + rows_per_buffer * (subrect_index + 1),
-                buffer = memoryview(bytearray([0] * (buffer_size * 4)))
-                mask = memoryview(bytearray([0] * mask_length))
+                buffer = memoryview(bytearray([0] * (buffer_size * 4))).cast("I")
+                mask = memoryview(bytearray([0] * (mask_length * 4))).cast("I")
         if transposed != will_transposed:
             self._core.width, self._core.height = self._core.height, self._core.width
         self._core.set_rotation(value)
         if transposed != will_transposed:
             self._core.width, self._core.height = self._core.height, self._core.width
         self._core.set_rotation(value)