function scaleObject(evt,factor) { //reference to the currently selected object var element = evt.currentTarget; //query old transform value (we need the translation value) var curTransform = element.getAttributeNS(null,"transform"); //no fear from Regular expressions ... just copy it, I copied it either ... var translateRegExp=/translate\(([-+]?[\d.]+)(\s*[\s,]\s*)([-+]?[\d.]+)\)\s*/; //This part extracts the translation-value from the whole transform-string if (curTransform.length != 0) { var result = curTransform.match(translateRegExp); if (result == null || result.index == -1) { oldTranslateX = 0; oldTranslateY = 0; } else { oldTranslateX = result[1]; oldTranslateY = result[3]; } //concatenate the string again, add scale-factor var newtransform = "translate(" + oldTranslateX + " " + oldTranslateY + ") " + "scale(" + factor + ")"; } //set transform-factor element.setAttributeNS(null,'transform', newtransform); }