diff --git a/src/ui/mouse.cpp b/src/ui/mouse.cpp
index 5fda66f28..eaeeb14b9 100644
--- a/src/ui/mouse.cpp
+++ b/src/ui/mouse.cpp
@@ -272,7 +272,8 @@ global void DoRightButton(int sx,int sy)
 
 	    // cade: this is default repair action
 	    dest=RepairableOnScreenMapPosition(sx, sy);
-	    if( dest && dest->Type && dest->Player==ThisPlayer ) {
+	    if( dest && dest->Type && (dest->Player==ThisPlayer
+		    || IsAllied(ThisPlayer,dest)) ) {
 		SendCommandRepair(unit,x,y,dest,flush);
 		continue;
 	    }
@@ -795,7 +796,8 @@ local void SendRepair(int sx,int sy)
     int y;
 
     dest=RepairableOnScreenMapPosition(sx,sy);
-    if( !dest || !dest->Type || dest->Player!=ThisPlayer ) {
+    if( !(dest && dest->Type && (dest->Player==ThisPlayer
+	    || IsAllied(ThisPlayer,dest))) ) {
 	// FIXME: Should move test in repairable
 	dest=NoUnitP;
     }