I'm guessing that your temps are @ idle - You need to check under load!!
I've seen several threads where the user is seeing 60C in BIOS and 40 ->50 in windows 7 @ idle.
In bios the system is @ idle with less of a workload, but for 100% of time. In windows, @Idle, the work load is higher BUT windows will shut cores down for part of the time - This is simular to PWM which will decrease the AVg power consumption and therefore lower temps after the operating system is loaded..
More important is the temps when under load. For this download and install CPUID HWMonitor. Also down load Prime95. Run HWMonitor and monitor temps (primarily the for indivual core temps) then run Prime95 and monitor the Max temps that you get. Recommend 70C or less, preferably the less. You only need to run for about 15 minutes to check temps, but for stability, 1 to 4 hours minimum (many run for 8 Hours to insure stability.
On HSFs - I do not even install the Stock HSF (Intels HSF is at the bottom of the heap in terms of performance. While the 3rd party ($30) HSF may not make much diff @ idle, they will make a considerable diff when under load.