A possible solution would be similar to OS X's fullscreen animation, which combines a stretch and a fade. I'll try and detail it here:
1. User clicks maximize/fullscreen button.
2. App begins to stretch to maximized/fullscreened size.
3. Compositor figures out what the app is going to look like when it's at the full size.
4. App smoothly fades between the stretched unmaximized image and a stretched fullscreen image while in the middle of the transition.
5. App arrives at proper fullscreen size.
A possible solution would be similar to OS X's fullscreen animation, which combines a stretch and a fade. I'll try and detail it here:
1. User clicks maximize/fullscreen button. fullscreened size.
2. App begins to stretch to maximized/
3. Compositor figures out what the app is going to look like when it's at the full size.
4. App smoothly fades between the stretched unmaximized image and a stretched fullscreen image while in the middle of the transition.
5. App arrives at proper fullscreen size.