It's tricky. Practically, I tend to agree with Tom - if it ain't broke, don't fix it. Especially at small-to-medium scale (let's say hundreds of URLs, but not thousands), rel=canonical is probably going to do the job here.
Technically, CleverPhd is correct that paginated content may be better served by rel=prev/next, and Google isn't fond of you canonical'ing to page 1 of search results. Their other preferred method is to canonical to a "View All" page (and make that page/link available to visitors), if that page loads reasonably and isn't huge.
In practice, they don't seem to penalized anyone for a canonical to page 1, and I know some mega-site SEOs who use rel=prev/next and have been almost completely unable to tell if it works (based on how Google still indexes and ranks the content). I think the critical thing is to keep most of these pages out of the index and avoid the duplicates. If your approach is working for now, my gut says to leave it alone.