Narrowing extends rewriting with logic capabilities by allowing free variables in terms and replacing matching with unification. Narrowing has been widely used in different contexts, ranging from theorem proving (e.g., protocol verification) to language design (e.g., it forms the basis of so called functional logic languages). Surprisingly, the termination of narrowing has been mostly overlooked. In this paper, we present new techniques for proving the termination of narrowing in left-linear constructor systems--a widely accepted class of systems in functional and functional logic programming--that allow us to reuse existing methods in the extensive literature on termination of rewriting.