There's a bug (looks just like a simple cut and paste error) in functions.php where the GPSLongitude is calculated - this causes images taken east of Greenwhich and North of Equator to be stored (and hence shown on e.g. google maps) as if they were taken West of Greenwich.
To correct it:
In \includes\functions\php, find
elseif ($key == "GPSLongitude") {
$GPSLongitude_h = explode("/", $exif_info[0]);
$GPSLongitude_m = explode("/", $exif_info[1]);
$GPSLongitude_s = explode("/", $exif_info[2]);
$GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
$GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
$GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
$GPSLongGrad = $GPSLatfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
$exif_array[$exif_match[$key]] = $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";
Replace this with
elseif ($key == "GPSLongitude") {
$GPSLongitude_h = explode("/", $exif_info[0]);
$GPSLongitude_m = explode("/", $exif_info[1]);
$GPSLongitude_s = explode("/", $exif_info[2]);
$GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
$GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
$GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
$GPSLongGrad = $GPSLongfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
$exif_array[$exif_match[$key]] = $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";
(I can't figure out how to colour the code, but the important bit is the 2nd to last line where the original code references $GPSLatfaktor which should have been $GPSLongfaktor.