You need -t. flag to indicate '.' both your separator and the position qualifiers with several keywords process gradually longer / deeper numbers. I still don't quite understand how this works, but it works ...
sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n numbers
or
cat numbers | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n