I think that "improve (upon) its weaknesses" is a weak construction in either case, although use of the prep. soounds slightly better. You want to lessen or mitigate or alleviate its weaknesses.

as to improve v. improve upon:
The difference between these two may be that in the latter you are coming up with something separate. If you improve my recipe, you modify my recipe. If you improve upon it, you are coming up with a separate recipe of your own touted to be better.