Hey!!! Got one idea.
What about declaring Ptr as a Union with both types of pointers (struct Pixel * and APTR) ? :-D
By the way, since I'm an optimization freak, will the compiler make less efficient code like this, or will it simply remind the the Ptr variable can be both types. If I recall correctly the variable types in C are just like a list the compiler keeps to avoid the programmer making errors, shouldn't affect the code except for when a Union contains two or more types of diferent sizes, in this case the only difference would still be the size of the memory block reserved for the variable (being a size that could take the biggest type in the Union), but performance wise the code would be as fast right? :-D
I'm gonna try this when I get home, but some of you could say something about it... Maybe we're just all preparing to get drunk in the end of the year :-D