The best solution to a security problem is often to rewrite the application as a whole, or parts of it, and make it harder to introduce security bugs. For instance, xterm used to be installed setuid root because it has to allocate a pseduo terminal pair, and update the utmp file. Each time a security problem was found in it, millions of sites were ``rooted'', i.e. had their root account compromised.
Now xterm is a fairly large application with about 40000 lines of code, about 6000 of which for the handling of VT100 terminal control sequences alone. This is not counting X11 library code that's being called by the application. So there's a huge potential for security problems, while the part of the code that really has to run with root privilege is effectively a few hundred lines at most. If we find a solution that allows us to run just those few lines with super user privilege, but run the rest with user privilege only, we've improved the application's security by a huge margin.