Brazilian workers have removed more than 33 tonnes of dead fish from the 2016 Olympic rowing and canoeing venue in Rio de Janeiro.
A team of more than 60 people have been working since last week to clear the remains from Lagoa Rodrigo de Freitas.
Scientists said the fish were starved of oxygen because of pollution.
Water quality has also been a major concern for organisers in Guanabara Bay, where Olympic sailing events are due to be held.
The overwhelming smell at the lagoon has led to complaints from residents and members of local rowing clubs.
Rio’s environmental secretariat said on Thursday that the deaths were the result of a sudden change in water temperature, but scientists rejected that explanation.
Paul Rosman, an oceanographer who works at the lagoon, told Reuters that a rise in algae blooms had led to a build up of carbon dioxide in the water.
“There was a big effort to stop sewage and we removed everything possible,” he added.
“But reducing the sewage doesn’t mean you have reduced the algae blooms. That happens because of the excess of nutrients in the water.”
Tonnes of dead fish have appeared on the surface of the lagoon before.
Mr Rosman said successive state and city governments had ignored proposals to improve water quality by dredging canals that lead into the sea.
Rio Governor Luiz Fernando Pezao acknowledged earlier this week that there was “not going to be time” to finish the cleanup ahead of the games next August.
In January government officials also stated they would miss their target of an 80% reduction in water pollution in Guanabara Bay.