According to the United States Census Bureau, the town has a total area of 30.50 square miles (78.99 km²), of which, 29.12 square miles (75.42 km²) of it is land and 1.38 square miles (3.57 km²) is water.
Situated beside Lake Anasagunticook, Canton is drained by Whitney Brook and the Androscoggin River.

The town is crossed by state routes 108 and 140.
It borders the towns of Jay to the northeast, Hartford to the south, Peru to the west, and Dixfield to the northwest.
According to the United States Census Bureau, the town has a total area of 30.50 square miles (78.99 km²), of which, 29.12 square miles (75.42 km²) of it is land and 1.38 square miles (3.57 km²) is water. Situated beside Lake Anasagunticook, Canton is drained by Whitney Brook and the Androscoggin River.
The town is crossed by state routes 108 and 140. It borders the towns of Jay to the northeast, Hartford to the south, Peru to the west, and Dixfield to the northwest.
Canton, Maine