The pilot and a passenger, who were flying from Easterton Airfield, near Elgin, last October, were rescued.
The pilot, who was attempting a safe landing after losing power, suspected part of the engine iced up.
The Air Accidents Investigation Branch (AAIB) report said the pilot landed in the firth because the shore was rocky.
RNLI Invergordon and the coastguard responded to the incident. The microlight ditched near Evanton.
The two people were winched on board a coastguard helicopter and taken to Raigmore Hospital in Inverness.
They were not injured but were "shocked and hypothermic".
The AAIB report said: "The pilot flew at an altitude of 5,500 ft across the Moray Firth, but found the temperature cold. He therefore descended to 2,000 ft to cross the Cromarty Firth and then again to approximately 20ft to fly along the shore.
"When the pilot attempted to apply power to climb, the engine did not respond and the aircraft descended towards the water.
"He decided to ditch the aircraft because the shore, although close by, was rocky. The aircraft flipped as it entered the water."
The pilot and his passenger unfastened their seatbelts and escaped from the aircraft's pod.
The AAIB report said:  "The pilot conjectured that the loss of power may have been caused by carburettor icing during the two previous descents."
The icing up of an engine part most likely caused a microlight aircraft ending up in the Cromarty Firth, according to a report on the incident.