I was taught to think that there is a precise definition of "canonical" in differential topology, at least in the context of linear algebra constructions. A construction is canonical if it is a smooth functor. (There is a Wikipedia page about smooth functors but it is not very insightful). And since it is hard to invent a non-smooth functor, it practically boils down to just being a functor.
The categories involved are usually not mentioned explicitly, and they are not things like vectors spaces with linear maps. They are rather things like vector spaces with linear isomorphisms as morphisms. Or, more generally, isomorphisms of whatever structure you happen to have on them. For example, dual vector space is a canonical construction but an isomorphism between a vector space and its dual is not. On the other hand, there is a canonical one if your spaces carry Euclidean structure.
The idea is that a canonical construction can be applied fiber-wise in fiber bundles. Sometimes this feature is advertised as a poor man's definition of "canonical" but this is not quite correct: for example, every vector bundle (over a paracompact base) is isomorphic to its dual, but this is not really canonical.