I am far from a SVG expert and have mostly only researched to find image replacements to eliminate additional HTTP Requests, a task that SVG performs remarkably well.
I have noticed there seems to be far more SVG parameters available than HTML/CSS. CSS can only sometimes be used and sometimes there are conflicts.
Also it is not easy to Google for an exact solution to satisfy all requirements
I forgot to mention that your solution appears to be far more than adequate and personally I would move on to the next problem rather than trying to find perfection.