Noticed that the cursor would not position properly at the end of the entered text when I had the tk2dUITextInput embedded in a slightly scaled down parent object. The fix is to divide the extent of the renderer bounds by the lossyScale of the game object at the end of SetCursorPosition(). I split it into a var with 2 lines just for readability:
float renderBoundsRight = inputLabel.GetComponent<Renderer>().bounds.extents.x/gameObject.transform.lossyScale.x;
cursor.transform.localPosition = new Vector3(inputLabel.transform.localPosition.x + (renderBoundsRight + cursorOffset) * multiplier, cursor.transform.localPosition.y, cursor.transform.localPosition.z);