M-140 starts at an intersection with M-139 near the St. Joseph River north of Niles and runs due north through farm fields. The trunkline jogs to the west near Steinbauer Lake before returning to the northerly course. There is another westerly jog along Pokagon Road around Riggins Lake. M-140 turns back northward and runs through the community of Berrien Center. Near Eau Claire, the highway turns bends along Maple Grove Road for about before going north on Watervliet Road. East of town, the trunkline follows Main Street eastward toward the Berrien–Cass county line. M-140 intersects the northern terminus of M-62 and curves north.