There are a lot of variables to getting correct colour in modern digital photography. Some of the variables have to do with the camera some don't.
Monitor calibaration for example. Pictures will almost always look better on the monitor because of the inherent differences between projected and reflected images.
Although Canons are good, there is NO camera that gets it right all the time and there will probably never be one. Take a picture on an automatic setting with 10,000 dollar camera or a 1000 dollar camera or a 100 camera of a human subject under flouroscent light. The uncorrected result will be an image with a strong green cast. Why?... because fluoroscent light is greenish. Our eyes compensate for the green cast so WE don't see it. The camera sees it though....and UNLESS you tell the camera (by use of a filter on the lens during exposure - or a setting (like a warming as mentioned by RickC) within the camera menu or by adjusting the camera's white balance the result will have a greenish cast. This is because cameras do not have brains, they average out the tones in a scene to acheive an average - the camera does not know if the shot was taken under fluoroscent light, window light, street light, light at sunrise, light at sunset etc. All these different light sources have different colour temperatures and produce different clour casts.
This is where graphics programs and good photo labs come in handy - they can reduce or eliminate the casts that we did not notice during exposure.
The best way to have colours appear as they should is to tell the camera (if your camera has such a setting) BEFORE shooting if the light source is unusual. Most cameras are balanced for daylight - so anything other than average daylight can produce a cast.
Hope that helped.