diff --git a/core/src/cz/nic/tablexia/game/GameDefinition.java b/core/src/cz/nic/tablexia/game/GameDefinition.java
index 538559521b2b2f63ff2e9b9583f252d365367858..855035ec0925594171a970b73121fd4855ac56c3 100644
--- a/core/src/cz/nic/tablexia/game/GameDefinition.java
+++ b/core/src/cz/nic/tablexia/game/GameDefinition.java
@@ -52,10 +52,15 @@ public enum GameDefinition implements ApplicationEvent, IMenuItem {
         public abstract float getGameScoreResult(Game game);
         public abstract List<GameScore> getGameScoreList(GameDifficulty difficulty, AbstractTablexiaGame.GameResult result);
 
-        //Override this method if you want to use different values to sort graphs in statistics screen
+        //Override this method if you want to use different values to sort graphs in statistics screen (eg. CrimeScene)
         public float getStatisticsScore(Game game) {
             return getGameScoreResult(game);
         }
+
+        //Override this method if you want to show different formatted score in graph detail dialogs in statistics screen (eg. Pursuit or CrimeScene)
+        public String getFormattedScoreForStatistics(Game game) {
+            return Integer.toString(Math.round(getGameScoreResult(game)));
+        }
     }
 
     private int                                      gameNumber;
diff --git a/core/src/cz/nic/tablexia/game/games/crime_scene/CrimeSceneGame.java b/core/src/cz/nic/tablexia/game/games/crime_scene/CrimeSceneGame.java
index e874ab7dba590cbeb10ec528e0cf8c618705c3b3..645ebf2e305da0c47b44082e416ef9229a68af53 100644
--- a/core/src/cz/nic/tablexia/game/games/crime_scene/CrimeSceneGame.java
+++ b/core/src/cz/nic/tablexia/game/games/crime_scene/CrimeSceneGame.java
@@ -109,6 +109,8 @@ public class CrimeSceneGame extends AbstractTablexiaGame<CrimeSceneGameState> {
     private int                     wrongRounds = 0;
 
     public static class GameResultResolver extends GameDefinition.GameResultResolver {
+        private static final String FORMATTED_TEXT_FOR_STATISTICS_FORMAT = "%d / %d";
+
         @Override
         public AbstractTablexiaGame.GameResult getGameCupsResult(Game game) {
             return ResultStars.getStarCountForDifficultyAndErrors(GameDifficulty.getGameDifficultyForDifficultyNumber(game.getGameDifficulty()),
@@ -122,9 +124,14 @@ public class CrimeSceneGame extends AbstractTablexiaGame<CrimeSceneGameState> {
 
         @Override
         public float getStatisticsScore(Game game) {
-            //TODO - Replace THREE_STAR.getScoreForDifficulty with actual max points for difficulty
-            return getGameScoreResult(game) / ResultStars.THREE_STAR.getScoreForDifficulty(GameDifficulty.HARD);
-    }
+            //Score to sort graph values in statistics is calculated as "actualScore / maxScore". So 2 cups on hard difficulty wont show up higher than 3 cups on medium difficulty.
+            return getGameScoreResult(game) / (float)(getMaxScoreForDifficulty(GameDifficulty.getGameDifficultyForDifficultyNumber(game.getGameDifficulty())));
+        }
+
+        @Override
+        public String getFormattedScoreForStatistics(Game game) {
+            return String.format(FORMATTED_TEXT_FOR_STATISTICS_FORMAT, Math.round(getGameScoreResult(game)), getMaxScoreForDifficulty(GameDifficulty.getGameDifficultyForDifficultyNumber(game.getGameDifficulty())));
+        }
 
         @Override
         public List<GameScore> getGameScoreList(GameDifficulty difficulty, GameResult result) {
@@ -554,14 +561,18 @@ public class CrimeSceneGame extends AbstractTablexiaGame<CrimeSceneGameState> {
                 actionsStripWidget.getSelectedActions().size() + objectsLayer.getChildren().size == getData().getSolution().size();
     }
 
-    private int getMaxScore() {
+    private static int getMaxScoreForDifficulty(GameDifficulty gameDifficulty) {
         int maxScore = 0;
         for(int i = 0; i < MAX_ROUNDS; i++) {
-            maxScore += CrimeSceneDifficulty.getCrimeSceneDifficultyForGameDifficulty(getGameDifficulty()).getNumberOfObjects() + i;
+            maxScore += CrimeSceneDifficulty.getCrimeSceneDifficultyForGameDifficulty(gameDifficulty).getNumberOfObjects() + i;
         }
         return maxScore;
     }
 
+    private int getMaxScore() {
+        return getMaxScoreForDifficulty(getGameDifficulty());
+    }
+
     private void playAllSounds() {
         preparePlaySoundScreen(true);
         playSoundScreen.playSounds();
diff --git a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java
index 5b7ffafaedc30c954d476146a071c78c7074d3a7..904632d63915a953009d8f0bd66eacee7da5ccb0 100644
--- a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java
+++ b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java
@@ -83,6 +83,22 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
             gameScores.add(new GameScore(SCORE_KEY_MOVE_COUNT, Integer.toString(30)));
             return gameScores;
         }
+
+        @Override
+        public String getFormattedScoreForStatistics(Game game) {
+            float time = getGameScoreResult(game);
+
+            int minutes = (int) ((time / 1000) / 60);
+            int seconds = (int) ((time / 1000) % 60);
+
+            if(minutes == 0) {
+                return seconds + "s";
+            } else if (seconds == 0){
+                return minutes + "m ";
+            } else {
+                return minutes + "m " + seconds + "s";
+            }
+        }
     }
     private enum ResultMapping {
 
diff --git a/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java b/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
index 24643a2b4b87ee6ac6b6a4a2056c2c178dc6f38b..a733bc78579f14b8602f72442c26cb2effbf31d5 100644
--- a/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
+++ b/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
@@ -453,7 +453,7 @@ public class StatisticsScreen extends AbstractTablexiaScreen<Void> {
                                     dateText,
                                     String.format("%s %s",
                                                     ApplicationTextManager.getInstance().getText(GameDefinition.getGameDefinitionForGameNumber(game.getGameNumber()).getStatisticsAverageScoreDialogText()),
-                                                    getCorrectedScore(selectedGameDefinition, averageScore)));
+                                                    getCorrectedScore(selectedGameDefinition, game)));
         }
 
         @Override
@@ -588,30 +588,8 @@ public class StatisticsScreen extends AbstractTablexiaScreen<Void> {
         return false;
     }
 
-    /**In some games is time used as score (less means better).
-    In order to calculate graph points, it is converted to 1/time.
-    This function makes the opposite to show real time.
-    Other scores are converted to text representing minutes and seconds */
     private String getCorrectedScore(GameDefinition gameDefinition, Game game) {
-        return getCorrectedScore(gameDefinition, gameDefinition.getGameResultResolver().getGameScoreResult(game));
-    }
-
-    private String getCorrectedScore(GameDefinition gameDefinition, float score) {
-        if(gameDefinition == GameDefinition.PURSUIT) return millisecondsToTimeText(score);
-        return String.valueOf(Math.round(score));
-    }
-
-    private String millisecondsToTimeText(float time) {
-        int minutes = (int) (time/1000) / 60;
-        int seconds = (int) ((time/1000) % 60);
-
-        if(minutes == 0) {
-            return seconds + "s";
-        } else if (seconds == 0){
-            return minutes + "m ";
-        } else {
-            return minutes + "m " + seconds + "s";
-        }
+        return gameDefinition.getGameResultResolver().getFormattedScoreForStatistics(game);
     }
 
     /**returning absolute value of clicked position on X axis on screen*/