Let's just make this boring and go to science.
So, he changed his approach at the plate to be more focused into driving the ball which is done by making contact, obviously, and producing more force to transfer to the ball for it to carry.
Taking Robert Adair's equation for relating bat speed, let's take a look at Bonds pre and post '99.
V = k sqrt(M/(m+M/81))
Pretty straight forward and simple equation where V is velocity (in MPH), m is the weight of the bat (in pounds), M is the player's weight (in pounds), sqrt is square root, and k is a constant of of 10 (in MPH).
Adair pulled the numbers and upon applying his formula he has a 206-pound Bonds (pre-1999) with a swing speed of 67.34mph, and a 228-pound Bonds swings the same 32-ounce bat at 68.81mph. That's a difference of 1.48mph. Seems like a relatively small difference, but it's actually quite large.
Alan Nathan, a baseball physics freak, estimates that each 1mph of bat speed equates to about six feet of distance on average. By these estimates, Bonds added nine feet to each fly ball leaving his bat.
ESPN broke it down and looked at the distance of all of his HRs from 1999 and looked to see how many fell short per the nine foot estimated difference.
1999: four out of 34
2000: nine out of 49
2001: 18 out of 73
2002: 11 out of 46
2003: 10 out of 45
2004: 13 out of 45
2005: one out of five
2006: zero out of five
I took a look at his HR totals by year earlier in his career to compare differences above to his average output when he was "apparently" playing clean.
Starting in 1990, home run totals:
1990: 33
1991: 25
1992: 34
1993: 46
1994: 37
1995: 33
1996: 42
1997: 40
1998: 37
Over that span that is an average of 36.3 hr/yr.
Jumping back to the estimated differentials of removing nine feet per HR above we have, per year:
1999: 30
2000: 40
2001: 55
2002: 35
2003: 35
2004: 32
Since '05 and '06 are kinda meaningless per his lack of play time, his average over this span would have been 37.8 hr/yr.
36.3 and 37.8. That's kinda interesting that those are relatively similar, no?