Gravity not functioning properly?

In my game I'm switching gravity round so the user can walk on the ceiling. To move and jump I'm using the standard "2D Side Scroller" code from the assets folder. My problem is when I flip gravity around the character moves along the ceiling VERY slowly and cannot jump so it seems to me that gravity is pushing down WAY too hard on it. Does anyone know how I can fix this? The code I use to invert gravity is:

function OnGUI () {
    if (GUI.Button (Rect (0,0,50,50), "Up")) {
        Physics.gravity = Vector3 (0, 1.0, 0);
    }
    if (GUI.Button (Rect (50,0,50,50), "Down")) {
        Physics.gravity = Vector3 (0, -1.0, 0);
    }
}

Thanks in advance!

The switching gravity part should be ok although normally gravity is 9.81 not 1. The problem is probably in the moving code. I guess the jumping code works independently from the direction of gravity and assumes that by jumping you mean "move in Vector3.up direction, which won't work if you're upside down.