Index: DependencyObject.cs =================================================================== --- DependencyObject.cs (revision 109778) +++ DependencyObject.cs (revision 109777) @@ -399,18 +399,16 @@ case Kind.DOUBLE_ARRAY: { UnmanagedArray *array = (UnmanagedArray*)val->u.p; double [] values = new double [array->count]; - fixed (double* first_d = &array->first_d) { - Marshal.Copy ((IntPtr)first_d, values, 0, array->count); - } + Marshal.Copy ((IntPtr) (&array->first_d), values, 0, array->count); return values; } case Kind.POINT_ARRAY: { UnmanagedArray *array = (UnmanagedArray*)val->u.p; Point [] values = new Point [array->count]; - fixed (UnmanagedPoint *first = &array->first_pnt) { - for (int i = 0; i < array->count; i++) - values [i] = new Point (first [i].x, first[i].y); + Point* first = (Point*) &array->first_pnt; + for (int i = 0; i < array->count; i++) { + values [i] = first [i]; } return values; } @@ -554,9 +552,7 @@ UnmanagedArray* array = (UnmanagedArray*) value.u.p; array->count = dv.Length; array->refcount = 1; - fixed (double* first_d = &array->first_d) { - Marshal.Copy (dv, 0, (IntPtr) first_d, array->count); - } + Marshal.Copy (dv, 0, (IntPtr) (&array->first_d), array->count); } else if (v is Point []) { Point [] dv = (Point []) v; @@ -566,13 +562,9 @@ UnmanagedArray* array = (UnmanagedArray*) value.u.p; array->count = dv.Length; array->refcount = 1; - fixed (UnmanagedPoint *dp = &array->first_pnt) { - for (int i = 0; i < dv.Length; i++) { - dp [i] = new UnmanagedPoint (); - dp [i].x = dv [i].X; - dp [i].y = dv [i].Y; - } - } + Point * dp = (Point*) &array->first_pnt; + for (int i = 0; i < dv.Length; i++) + dp [i] = dv [i]; } else if (v is Rect) {